Ftp

ftp mget 不要覆蓋

  • August 15, 2016

我在 ftp 腳本中使用 mget,並希望 mget 跳過獲取本地目錄中已存在的文件。有沒有這樣的方法?如果是這樣,如果本地和遠端文件不同,mget 還有一種方法可以繼續嗎?

編輯:兩者都是很好的答案,我選擇了第二個,因為它提供了一個我修改為的範例:

lftp $HOST -u $USER,$PASSWD -e 'mirror --verbose=3 --only-newer --include "my-extended-regex-expression-of-include-file-patterns" / transfer/'

有許多不同的ftp實現。我不知道有任何ftp程序具有mget在下載前檢查本地文件的命令。

有許多程序可以通過 FTP 下載文件,並且確實有你想要的。

lftp ftp.example.com <<EOF
mirror --only-missing --file=/path/to/*.ext .
EOF

替換--only-missing--only-newer僅下載較新的文件。

wget -nc 'ftp://ftp.example.com/path/to/*.ext'

添加-N僅下載較新文件的選項。

或者,這是做複雜事情的最佳解決方案,掛載遠端文件系統,然後使用普通文件操作工具。您可以使用CurlFtpFS掛載 FTP 目錄。

mkdir mnt
curlftpfs ftp://ftp.example.com/ mnt
rsync -a --ignore-existing mnt/*.ext .   # replace --ignore-existing by -u to download only newer files
fusermount -u mnt

引用自:https://unix.stackexchange.com/questions/303245