次のようなファイルがあるディレクトリがあるとします。
a b c d
そこで rsync でコピーします:
rsync -av --delete -P --backup --backup-dir=sample-$(date +%a-%H%M) ../sample /backups
/backup/sample に入ります:
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 d
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 c
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 b
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 a
しかし、ディレクトリを作成すると:
a b c d newdir
/backup/sample にのみ入ります:
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 d
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 c
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 b
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 a
drwxr-xr-x 2 sergio sergio 8192 feb 17 18:52 newdir
ただし、ファイルを削除すると:
/backups
├── sample
│ ├── a
│ ├── b
│ ├── c
│ └── newdir
└── sample-sáb-1855
└── sample
└── d
では、なぜ rsync は最初の変更 (newdir の作成) で 'sample-date...' を作成しないのでしょうか。これは予想される動作ですか?
答え1
からrsync(1)
-b, --バックアップ
このオプションでは、既存の宛先ファイルファイルは転送または削除されるたびに名前が変更されます。バックアップファイルの保存場所と、(ある場合)追加されるサフィックスを制御できます。--バックアップディレクトリそして- サフィックスオプション。
最初の 2 回は新しいファイルのみが転送されるため、バックアップを作成する必要はありません。
3 回目の呼び出しで、ファイルsample/d
が削除され、オプションによって--backup
rsync に のバックアップを作成するように指示されますsample/d
。このバックアップは、バックアップ ディレクトリ/backups
+に作成されますsample-$(date +%a-%H%M)
。
既存のファイルのいずれかを変更した場合も同様のことが起こります。たとえば、ファイル を変更すると、バックアップ ディレクトリ にsample/a
のバックアップ コピーが作成されます。a
/backups/sample-$(date +%a-%H%M)
バージョン管理されたバックアップを作成したい場合は、rsyncを実行するたびに異なるターゲットディレクトリを指定することをお勧めします。
rsync -av --delete -P ../sample /backups/sample-$(date +%a-%H%M)