问候,我正在使用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是这项工作的正确工具。 它只会传输新的和已更改的文件,这意味着如果传输死亡并且必须重新启动,它将从停止的地方接收,而不是从头再次启动。