从一台服务器到另一台服务器的大型 FTP 传输

从一台服务器到另一台服务器的大型 FTP 传输

你好,我正在使用 ncftpput 将大量文件从一台服务器传输到另一台服务器

ncftpput -f server.txt -vRdb /public_html /var/www/site.com

发生的情况是,大约 100 次传输后,连接被切断。有数千个文件需要传输。问题是,在连接被切断后,我重新输入命令,它从头开始。替换所有现有文件,使之前的传输变得多余。有没有办法跳过现有文件?手册页中没有,所以我假设没有。那么有人建议使用替代的命令行解决方案吗?

答案1

lftp是一个很棒的工具,可以使用镜像命令编写脚本:

 lftp has builtin mirror which can download or update a whole
 directory  tree.  There  is  also reverse mirror (mirror -R)
 which uploads or updates a directory tree on server.  Mirror
 can also synchronize directories between two remote servers,
 using FXP if available.

$ lftp -f

脚本文件:

open ftp://<user>:<pass>@ftp.blah.org/~
set net:timeout 10
set net:max-retries 2
set net:reconnect-interval-base 5
set net:reconnect-interval-multiplier 1
mirror dir1 dir1
exit

答案2

您可以尝试使用 ncftpput 的-DD选项。这将在成功传输后删除本地文件。如果您不想删除 /public_html 目录中的文件,您可以先将它们复制到临时目录中。

答案3

#!/bin/bash

FILES=`cat server.txt`
for FILE in $FILES
do
  if [ ! -d "$FILE" ]; then
    echo "Uploading $FILE..."
    ncftpput -DD -u $FTPUSER -p $FTPPASS $FTPHOST /destination/ftp/dir/$FILE
  fi
done

不要忘记设置 FTPUSER、$FTPPASS、$FTPHOST -DD 选项将在成功的上传。第 4 行中的“!-d“$FILE””将跳过 server.txt 中的目录。不要忘记使用“chmod 755 yourscriptfile”使脚本可执行。

答案4

尝试输出

相关内容