Shell-Script

rsync 檢測新文件和目錄失敗

  • March 18, 2020

幾年來,我一直在通過 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/(注意尾部斜杠)使腳本的行為恢復到我的預期。

引用自:https://unix.stackexchange.com/questions/573462