假設我有一個包含文件的目錄:
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)