~/music
すべての音楽ファイルを含むディレクトリと、/media/backup/music
最初のファイルとの同期に使用したいディレクトリがありますrsync
。最初は、予想通り、すべての音楽ファイルを含むディレクトリをrsync -a ~/music /media/backup
作成しました。music
/media/backup
それ以来、私はその中にある多くのファイル名を変更していましたが、~/music
その変更を同期したいと思います。すると、rsync -ain
これらの修正は次のように登録されているようです。新しいファイル - 既存のターゲットファイル名のみを更新するのではなく、バックアップディレクトリに新しいファイルセットを作成します。私のファイルのほとんどはサイズが大きいので、名前を変更するたびに再コピーする必要はありません。
rsync
新しいファイルを作成せずに元のファイル名のみを更新して、同じファイルを別の名前に同期させる方法はありますか?おそらく--delete
不要なファイルを削除するためにこのオプションを使用します。しかし、もっと良い方法があれば知りたいです。
例:
$ cd example
$ rsync -a var backup/ # rsync var under backup/var
$ tree .
.
├── backup
│ └── var
│ ├── JSON.gif
│ └── logs
│ ├── xinit.log
│ └── x.log
└── var
├── JSON.gif
└── logs
├── xinit.log
└── x.log
$ mv var/JSON.gif var/JSON-LOGO.gif # rename some file
$ mv var/logs var/log # rename some directory
$ rsync -a var backup/ # sync the changes
$ tree .
.
├── backup
│ └── var
│ ├── JSON.gif # don't want this one
│ ├── JSON-LOGO.gif # want -only- this one
│ ├── log # same here
│ │ ├── xinit.log
│ │ └── x.log
│ └── logs # don't want this one either
│ ├── xinit.log
│ └── x.log
└── var
├── JSON-LOGO.gif
└── log
├── xinit.log
└── x.log
答え1
このオプションを見ることもできます--fuzzy
。
マニュアルページを引用すると、次のようになります。
このオプションは、rsyncに、欠落しているターゲットファイルのデフォルトファイルを見つける必要があることを指示します。現在のアルゴリズムは、ターゲットファイルと同じディレクトリで、サイズと変更時間が同じファイルまたは類似の名前を持つファイルを探します。見つかった場合、rsyncは難読化されたデフォルトファイルを使用して転送速度を上げようとします。
--deleteオプションを使用すると、潜在的なファジー一致ファイルが削除される可能性があるため、これを回避する必要がある場合は、--delete-afterを使用するか、一部のファイル名を除外するように指定してください。
この説明によると、このアルゴリズムはあまりスマートではなく、名前が変更されたディレクトリや別のディレクトリにある同じファイルでは機能しません。
答え2
を使用する必要があります--delete
。
他の方法があるかどうかはわかりませんが、音楽ファイルは最大10 MBであるため、再コピーに問題はありません。
編集:scaiが言ったようにを使うことはできますが、--fuzzy
実際にはそうではありません。これはタスクの完了を保証せず、最終的に誤検出につながる可能性がある多くの変数によって異なります。