rsyncのシンボリックリンクが奇妙に動作します。

rsyncのシンボリックリンクが奇妙に動作します。

今夜、いくつかのrsyncバックアップが期待どおりに機能しないことがわかりました。詳細については、オプションと一緒にrsyncバージョン3.1.2を使用してください-rulv

簡単に言えば、私たちのサーバーのハードドライブの1つには、ファイルでいっぱいのディレクトリがあります。そのうちのいくつかは時々他の場所(実際にはSSDキャッシュ)にシンボリックリンクされ、その後再びシンボリックリンクされます。通常のファイルに復元する。 (FWIW、キャッシュを指すために絶対シンボリックリンクを使用します。リモートバックアップボックスからサンプルを取得し、絶対シンボリックリンクが保存されていることを確認しました。)

データのリモートコピーに、ローカルサーバーに通常のファイルに復元されたシンボリックリンクが含まれていることに気づきました。これは、通常のrsyncプロセスがリモートシンボリックリンクを通常のファイルで上書きしないことを意味します。また、ある時点でリモートの汎用ファイルをシンボリックリンクで上書きすることが明らかであるため、プロセスを元に戻さないようにするのは奇妙です。

rsyncのマニュアルページを読みましたが、(a)この動作を理解したり(b)この状況で「正しい」操作を実行できるオプションの組み合わせがあるかどうかを判断することはできません。 「正しい」とは、ローカル側にシンボリックリンクがあるときに[成功的に発生]リモート一般ファイルを上書きし、ローカル側が[まだ発生していない]一般ファイルに戻るときにリモートシンボリックリンクを上書きすることを意味します。

ご案内いただきありがとうございます!

ベストアンサー1

将来、この障害物に直面するすべての人の利益のために...

さて、上記の@meuhのコメントのおかげで、このオプションが基本的に問題であることを確認することができました-u(しかも慎重に考えませんでした!)。

シンボリックリンクを通常のファイルに復元するときは、コピーは必要なく、代わりにmvシンボリックリンクを上書きして元の一般ファイルを元の名前に復元します。これは inode の mtime ではなく ctime だけを更新し、rsync は-uシンクでファイルが最新かどうかを判断する際には明らかに (そして不当にならないように) mtime をチェックするので、古いローカル一般ファイルを最新ファイルと比較します。リモートシンボリックリンクを確認し、それを無視することを正しく決定しました。

おすすめ記事