大FTP从一台服务器转移到另一台服务器

问候,我正在使用ncftpput将大量的文件从服务器转移到另一个

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

发生的事情是,大约100次传输后连接被切断。 有成千上万的文件需要传输。 问题是连接被切断后,我重新input命令,它从头开始。 replace所有现有的文件,使以前的转移冗余。 有没有办法跳过现有的文件? 这不是在手册页,所以我不假设。 那么有没有人提出一个替代的命令行解决scheme?

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

  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

script_file:

 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 

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

 #!/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”来执行脚本。

你试过这个选项吗?

-A附加到远程文件,而不是覆盖它们。

(来自ncftp网站 )

试试wput

有什么理由不能使用rsync而不是ftp?

国际海事组织rsync是这项工作的正确工具。 它只会传输新的和已更改的文件,这意味着如果传输死亡并且必须重新启动,它将从停止的地方接收,而不是从头再次启动。