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