我的 rsync 備份方法安全嗎?

我的 rsync 備份方法安全嗎?

我製作了一個非常簡單的備份腳本,用於rsync將一些資料夾備份到 USB 記憶棒。這僅用於快速日常備份。

命令是

rsync -av --delete

接下來是--exclude選項和路徑。

但現在我想到這可能不安全:
如果我的硬碟損壞並且某些檔案無法再讀取會發生什麼?rsync如果無法讀取來源,是否會刪除棒上的檔案?
或者更一般地說:除了「我刪除硬碟上的檔案」之外,是否還有其他情況會導致 USB 記憶棒上的檔案被刪除?

答案1

首先,--delete如果您不了解背景,選項可能會導致一些不必要的破壞性結果。例如,如果來源變空,則目標處的所有現有文件都將被刪除,或者如果從來源中刪除某些文件,則這些文件也將從目標中刪除。

如果我的硬碟損壞並且某些檔案無法再讀取,會發生什麼情況?

如果rsync無法讀取原始程式碼,它將顯示權限被拒絕的訊息,並且不會執行任何進一步操作。因此您在目的地的現有文件將是安全的。

除了「我刪除硬碟上的檔案」之外,是否還有其他情況會導致 USB 上的檔案被刪除?

除非您的 USB 本身損壞,否則,在任何情況下(您不會從來源、硬碟中刪除檔案)USB 上的現有檔案都不會被rsync選項刪除--delete

測試:

% ls -1 source dest
dest:

source:
foo

% rsync -av --delete source/ dest
sending incremental file list
./
foo

sent 143 bytes  received 38 bytes  362.00 bytes/sec
total size is 16  speedup is 0.09

% ls -1 source dest              
dest:
foo

source:
foo

% chmod 000 source 

% rsync -av --delete source/ dest
sending incremental file list
rsync: change_dir "/source" failed: Permission denied (13)

sent 20 bytes  received 12 bytes  64.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]

% ls -1 source dest              
dest:
foo
ls: cannot open directory source: Permission denied

答案2

解決損壞和刪除問題的簡單方法是採用適當的備份過程。每週執行一次此命令時,旋轉一系列三個(或更多)USB 拇指驅動器,使用最舊的“備份”作為插入的棒。這樣,如果您在循環使用 USB 驅動器之前發現損壞,則可以從中恢復。這稱為 FIFO(先進先出)。

還有其他更複雜的方案,所有這些都與您的備份方法相容。維基百科上的以下連結提供了其中一些內容的入門知識:

https://en.wikipedia.org/wiki/Backup_rotation_scheme

相關內容