Rsync - -b(備份)標誌的具體作用是什麼?

Rsync - -b(備份)標誌的具體作用是什麼?

我無法理解 -b 標誌的作用。根據官方文件:

使用此選項,在傳輸或刪除每個檔案時,將重新命名預先存在的目標檔案。

但我不明白這意味著什麼。如何重命名正在刪除的檔案?重新命名檔案與備份有何關係?使用 -b 呼叫 rsync 後沒有檔案被重新命名:

rsync --delete -bavh

當我瀏覽不同的教學時,他們從未真正使用過這個選項,那麼它真的有用嗎?

之間有什麼區別

rsync --delete -bavh

rsync --delete -avh

另外,它可能沒有用,但我的用例如下:我想將桌面備份到已安裝的 WebDAV 驅動器上。備份將在每天的給定時間自動運行。

答案1

此選項的目的backup是保留任何被覆蓋和/或刪除的檔案的副本。

它可以用於--backup-dir將這些檔案保存在目標目錄之外的另一個目錄中。

--suffix您也可以使用附加到檔案名稱的選項指定備份後綴。如果沒有它,指定目錄中備份的檔案backup-dir將保留其原始檔案名稱。有了它,檔案可以被重新命名並保留在原始目錄中(這意味著這backup-dir不是必需的)。

因此,使用時需要使用backup-dir或。--suffixbackup

答案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~

相關內容