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
#!/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
lftp是一个很好的工具,它可以使用 mirror 命令编写脚本:
$ lftp -f
脚本文件:
您可以尝试使用 ncftpput 的
-DD
选项。这将在成功传输后删除本地文件。如果您不想删除 /public_html 目录中的文件,可以先将它们复制到临时目录。不要忘记设置 FTPUSER、$FTPPASS、$FTPHOST -DD 选项将在成功上传后删除文件。第 4 行中的 "!-d "$FILE"" 将跳过 server.txt 中的目录。不要忘记使用“chmod 755 yourscriptfile”使脚本可执行。
你试过这个选项吗?
-A 附加到远程文件,而不是覆盖它们。
(来自ncftp 网站)
试试wput
有什么理由不能使用 rsync 而不是 ftp?
IMO rsync 是这项工作的正确工具。它只会传输新的和更改的文件,这意味着如果传输终止并且必须重新启动,它将从中断的地方重新开始,而不是从头开始。