rsyncを使用して同じファイルを別のファイル名に同期する[重複]

rsyncを使用して同じファイルを別のファイル名に同期する[重複]

~/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を使用するか、一部のファイル名を除外するように指定してください。

この説明によると、このアルゴリズムはあまりスマートではなく、名前が変更されたディレクトリや別のディレクトリにある同じファイルでは機能しません。

おすすめ記事