私はftpスクリプトでmgetを使用しており、mgetがローカルディレクトリにすでに存在するファイルをインポートするのをスキップしたいと思います。そのような方法がありますか?もしそうなら、ローカルファイルとリモートファイルが異なる場合にmgetが進む方法はありますか?
編集:両方とも素晴らしい答えです。 2番目の答えが例を提供したので、私は選択し、次のように修正しました。
lftp $HOST -u $USER,$PASSWD -e 'mirror --verbose=3 --only-newer --include "my-extended-regex-expression-of-include-file-patterns" / transfer/'
ベストアンサー1
さまざまな実装があります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
最新のファイルのみをダウンロードするオプションを追加します。
あるいは、複雑なタスクを実行するための最良の解決策は、リモートファイルシステムをマウントしてから一般的なファイル操作ツールを使用することです。次のコマンドを使用して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