質問: ソースフォルダーから削除されたファイルをrsyncで削除するにはどうすればよいですか? 最近、ubuntu serverを搭載したマシンをセットアップして、ゲームサーバーをホストします。マシンの特定のフォルダにゲームワールドファイルの頻繁なバックアップを作成する各ゲームサーバーのバックアッププラグインをインストールしました。また、cronタスクを設定して、rsyncで-aオプションを使用して、これらのバックアップをdropboxフォルダーに毎晩自動的にコピーしました。数か月後、dropboxアカウントがストレージの上限に達し、あまり多くのバックアップを保持できないことに気づいたので、あまり多くのバックアップを保持しないようにゲームサーバーのバックアッププラグインを構成し、数日待って毎週実行するようにスケジュールされている古いバックアップを削除します。バックアッププラグインは最終的にそのジョブを実行し、古いバックアップを削除したので、rsync cronタスクがその後、dropboxフォルダーから古いバックアップを削除してソースフォルダーと一致することを期待していましたが、そうしませんでした。質問がいくつかあります。 デフォルトでは、rsyncのみaddソースフォルダーに追加された宛先フォルダーへのファイルとchangeソースフォルダー内で変更されたファイルnot deleteソースフォルダーから削除されたファイル? その場合、rsyncにこれを実行させる最良の方法は何ですか?移行先フォルダーに移行元フォルダーを完全に反映させたいので、移行元フォルダーから削除されたファイルをすべて削除する必要があります。 rsyncのマニュアルページに、トリックを行う可能性のあるいくつかのオプションが表示されていますが、私はよく知らないので。
回答: rsync scync中にエラーが発生した場合、--delete、--delete-after、または--delete-beforeを使用した場合でも、rsyncは必要なファイルを適切に削除しません。これが、rsyncエラーに対処することが重要である理由です。私のエラーのほとんどは、linux以外のファイルシステムとの同期中に--permオプションを使用したことが原因でした。 --permsを--no-permsに置き換えると、これらのエラーはなくなり、削除は機能しました。--permsは、linuxファイルシステムから別のlinuxファイルシステムに同期する場合は問題ありませんが、linuxから非linuxファイルシステム(ntfs、fatなど)に同期する場合は、--perms rsyncは非linuxファイルシステムにlinuxパーミッションを設定できないためエラーが発生します。繰り返しますが、エラー=削除はありません。-linux以外のパーティションに同期するとき、--no-permsを使用して、妨害行為--delete、--delete-after、または--delete-beforeのエラーを回避します。それでもエラーが発生し、それらのエラーを解決する方法がわからない場合は、非同期ファイルの削除専用のコマンドを実行できます。sudo rsync -r --delete --existing --ignore-existing --ignore-errors --progress /path/to/source/ /path/to/destination 上記のコマンドは、同期していないものを削除しますが、ファイルを同期しません。そのため、この後に再度同期する必要があります。このコマンドは、この answer に基づいていますが、--ignore-errors引数も追加したため、エラーがあった場合でも削除されます。