私は数年前から rsync を使ってリモート マシンにバックアップを行っています。少なくとも過去 2 か月間、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/
(末尾のスラッシュに注意) に復元すると、スクリプトの動作が期待どおりに戻りました。