rsyncで「find..」を使用すると、rsyncの--deleteオプションは機能しません。

rsyncで「find..」を使用すると、rsyncの--deleteオプションは機能しません。

私はそれを使用しています

rsync -avh --progress --delete `find /path/to/files -type f -printf "%p\n" | sort -rn | head -n 5` /path/to/backup/

最新の5つのファイルをバックアップしてください。この--deleteオプションは、検索出力の5つのファイルに含まれていない場合は、ターゲットフォルダのファイルを削除する必要があります。残念ながら、この--deleteオプションは機能しません。どうすればうまくいくか、私がすることを変えることができますか?

答え1

rsync手動状態:

--delete

これはrsync、受信側から不要なファイル(送信側にないファイル)を削除することを意味します。ディレクトリにのみ適用同期中です。

複数の個別ファイルを転送しているため--delete動作しません。

答え2

まだあなたの質問についてコメントするのに十分な評判を得ていないようです。

まず、使っているファイル名を上げてくれれば役に立ちそうです。また、サブディレクトリ構造が何であるかを知りたいです/path/to/files。私がこれを言うのは、findあなたが実行していることが実際に最新のファイルを印刷しているかどうかを知りたいからです。ここではタイムスタンプを操作しないので、私が尋ねるのです。したがって、この時点で明確にするために検索結果を貼り付けることもできます。

-nそしてぜひ必要なのか知りたいですsort。トピックから少し外れましたが、1つ作成できますsort | tail -5

ファイルの内容(ターゲットファイルを含む)の追加出力を見ないと、このアプローチが機能するかどうかはrsync --deleteわかりません。これはあなたに効果がありましたか、それともちょうど発見されていますか?

あるいは、findの-newer、-delete、および/またはmtimeフラグを見ることもできます。

関連情報