幾年來我一直透過 rsync 對遠端電腦進行備份。至少在過去的兩個月裡,rsync已經停止偵測要備份的機器上的新檔案和目錄。腳本的輸出表明檔案和目錄是最新的,即使它們足夠新,不存在於遠端電腦上的任何版本中!
#!/bin/sh
#
# MAKE SURE HAVE CORRECT REMOTE/AT-HOME LOGIN SETUP AND THAT TARGET IS TOTEMDOC and source is Documents
#
rsync -azvv -e "ssh -o CheckHostIP=no -i /home/stefan/.ssh/id_rsa" /home/stefan/Documents remoteUser@MouseHouse:/totembackup/totemdoc
輸出:
opening connection using: ssh -o CheckHostIP=no -i /home/stefan/.ssh/id_rsa -l totem MouseHouse rsync --server -vvlogDtprze.iLsfxC . /totembackup/totemdoc (13 args)
sending incremental file list
delta-transmission enabled
然後是每個文件都是最新的列表,然後是結論:
total: matches=0 hash_hits=0 false_alarms=0 data=0
sent 407,686 bytes received 794,633 bytes 801,546.00 bytes/sec
出了什麼問題?為什麼 rsync 無法偵測檔案的更改,甚至無法偵測新建立的檔案?
答案1
事實證明我的腳本中有一個不相關的愚蠢錯誤。這些文件一直都是最新的,腳本只是沒有將它們複製到我認為的位置。
在修改腳本的某個時刻,我一定不小心刪除了來源路徑中的尾部斜線。這意味著腳本將行為從複製到更改/totembackup/totemdoc
為複製到/totembackup/totemdoc/Documents
。Documents
在瀏覽/totembackup/totemdoc
以檢查備份是否正常工作時,我從未註意到這個新目錄。
恢復來源路徑/home/stefan/Documents/
(注意尾部斜線)使腳本的行為恢復到我的預期。