
我無法理解 -b 標誌的作用。根據官方文件:
使用此選項,在傳輸或刪除每個檔案時,將重新命名預先存在的目標檔案。
但我不明白這意味著什麼。如何重命名正在刪除的檔案?重新命名檔案與備份有何關係?使用 -b 呼叫 rsync 後沒有檔案被重新命名:
rsync --delete -bavh
當我瀏覽不同的教學時,他們從未真正使用過這個選項,那麼它真的有用嗎?
之間有什麼區別
rsync --delete -bavh
和
rsync --delete -avh
另外,它可能沒有用,但我的用例如下:我想將桌面備份到已安裝的 WebDAV 驅動器上。備份將在每天的給定時間自動運行。
答案1
此選項的目的backup
是保留任何被覆蓋和/或刪除的檔案的副本。
它可以用於--backup-dir
將這些檔案保存在目標目錄之外的另一個目錄中。
--suffix
您也可以使用附加到檔案名稱的選項指定備份後綴。如果沒有它,指定目錄中備份的檔案backup-dir
將保留其原始檔案名稱。有了它,檔案可以被重新命名並保留在原始目錄中(這意味著這backup-dir
不是必需的)。
因此,使用時需要使用backup-dir
或。--suffix
backup
答案2
玩過這個。這是我發現的。
使用 --backup 和 --backup-dir 建立某種增量備份。
假設你有這個程式碼:
# test date with a timestamp:
date +%F_%H-%M-%S
2024-03-06_19-48-08
#
SRC=your/cooldir
DST=backups
INCDIR="${DST}/inc_$(date +%F_%H-%M-%S)"
rsync -avh --backup --backup-dir="$INCDIR" "$SRC/" "$DST/"
當您第一次執行此命令時,您將獲得 backups/cooldir,它是您的/cooldir 的完整備份(鏡像同步)。
現在將檔案 newfile.txt 加入到 your/cooldir 中。再次運行程式碼。沒有刪除或更改文件,因此未建立 INCDIR。
現在刪除您的/cooldir/newfile.txt。再次運行程式碼。由於該檔案已被刪除並且指定了--backup 和--backup-dir,因此您將像以前一樣獲得backups/cooldir (完整備份),但您還可以獲得目錄backups/inc_2024-03-06_19-57- 23。在該增量目錄中,您將獲得 newfile.txt。它還在那裡,因為它被刪除了。
您可以透過建立 newfile2.txt 來再次嘗試此操作,然後執行它,然後在第二次執行時,只需修改 newfile2.txt (不要刪除它)。您再次在 backups/inc_xx 資料夾中獲得 newfile2.txt。
現在嘗試程式碼,但更改此行:
INCDIR="${DST}/inc_$(date +%F)"
並重新運行這些場景。第一次您將在 backups/inc_2024-03-06 中獲得 newfile.txt。第二次,您將在同一目錄中同時擁有 newfile.txt 和 newfile2.txt。換句話說,--backup 和 --backup-dir 並不完全是增量備份。它更多的是對文件的最後更改/刪除的累積。
最後,試試這個改變:
rsync -avh --backup "$SRC/" "$DST/"
這次您將更改和刪除的檔案用波形符重命名,例如 newfile.txt~