Shell-Script
rsync 檢測新文件和目錄失敗
幾年來,我一直在通過 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 檢測不到文件的變化,甚至檢測不到新創建的文件?
事實證明,我的腳本中有一個不相關的愚蠢錯誤。這些文件一直都是最新的,腳本只是沒有將它們複製到我認為的位置。
在某些時候修改腳本我一定不小心刪除了源路徑中的尾部斜杠。這意味著腳本將行為從復製到
/totembackup/totemdoc
複製到復製到/totembackup/totemdoc/Documents
.Documents
在瀏覽/totembackup/totemdoc
以檢查備份是否正常工作時,我從未註意到這個新目錄。將源路徑恢復到
/home/stefan/Documents/
(注意尾部斜杠)使腳本的行為恢復到我的預期。