私は次のことを達成しようとしています:
古い NAS から新しい NAS にすべてのデータが正しく rsync されたかどうかを確認するために、次のコマンドを実行します。
rsync --rltD -hvinu /path/to/old/NAS/ /path/to/new/NAS
現在: -n はドライランを取得し、-ia は変更のリストを取得し、-u は新しい NAS 上の新しいファイルをすべてスキップします (新しい NAS にはすでに更新があり、人々がすでに作業しているため、これが必要です)。
上記のコマンドを実行すると、いくつかのディレクトリについて次の内容を含むリストが表示されます。
.d..t
マニュアルページによれば、これは転送は行われないが、ターゲット内の属性 (つまり時間) が更新されることを意味します。
影響を受けるディレクトリを確認すると、ターゲットのディレクトリがソースのディレクトリよりも新しいことがわかります。
だから私は
- rsyncsの出力には表示されないはずです - スキップされるはずなので、
- そのタイムスタンプは更新されるべきではありません。 -u がその点に注意してください。
説明できる rsync のプロはいますか? ここで何がわからないのでしょうか?
ところで、これは Qnap NAS (ソース) と Synology NAS (ターゲット) での rsync 実装です。
更新1:
したがって、--update はファイルにのみ適用され、ディレクトリには適用されないようです。rsync は、サイズと最終変更タイムスタンプを比較し、宛先のタイムスタンプをソースのタイムスタンプ (古い方) に更新するという、本来の動作を実行しています。
ディレクトリに --update を適用するオプションは見つかりませんでしたが、ディレクトリのタイムスタンプを無視する --omit-dir-times はあります。このオプションを適用すると、ソース内の新しいディレクトリも無視されます。つまり、ソースに追加されたファイルは宛先に同期されますが、親ディレクトリの時間の対応する変更は同期されません。これが rsync のバグ/欠陥であるとは考えられませんが、何か見落としているのでしょうか?