LFTP - lftp ミラー --reverse 経由でアップロードするときにリモートサーバーからファイルを削除する

LFTP - lftp ミラー --reverse 経由でアップロードするときにリモートサーバーからファイルを削除する

私はlftp mirror --reverseリモートサーバーにファイルとディレクトリをアップロードするシェルスクリプトを使用しています。その直前にはすべてを削除したりしましたglob -a rm -r -f *。問題は、その速度がそれほど速くないということです。完全な操作、特に再帰の削除には数分かかります。何百ものファイルに数メガバイトのデータをアップロードしていますが、ほとんどのファイルは変更されていません。 FTPSプロトコルを介して接続しています。

質問

スクリプトのパフォーマンスをどのように向上させることができますか?

ローカルコンピュータに存在しないリモートサーバー上のファイルを削除しながら、新しいファイルまたはローカルで変更されたファイルのみをアップロードしようとしています。残念ながら、これが可能かどうか、どのように達成できるかわかりません。

フルスクリプト:

lftp $host << EOF

user $username $password
cd $destination_directory
glob -a rm -r -f *
mirror --reverse $local_directory .
exit

EOF

答え1

解決策はまさに目の前にあります。 LFTPマニュアルの調査中に、コマンドに私の要件に完全に合うオプションがmirrorあることがわかりました。--delete

--delete

ソースにないファイルは削除してください〜LFTPマニュアル

私は変わった

glob -a rm -r -f *
mirror --reverse $local_directory .

到着

mirror --reverse --delete $local_directory .

関連情報