
我製作了一個非常簡單的備份腳本,用於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