假设我有一个包含文件的目录:
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
-b,--备份
使用此选项,预先存在的目标文件每次传输或删除文件时都会重命名。您可以使用--备份目录和- 后缀选项。
前两次仅传输新文件,因此无需创建备份。
在第三次调用时,文件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)