ftp mget 上書きしないでください

ftp mget 上書きしないでください

私は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

おすすめ記事