ファイル名(およびサイズと日付)に関してディレクトリツリーを比較します。

ファイル名(およびサイズと日付)に関してディレクトリツリーを比較します。

バックアップの復元結果を確認したい。これは、MacOSのTimeMachineでいくつかの奇妙なエラーと警告が表示され、復元後にすべてが正しい位置に戻ることを確認したいからです。私はTimeMachineがすべてのファイルを回復するとは信じていませんが、TimeMachineが正しいコンテンツで回復するすべてのファイルを回復すると信じています。

diff -rを考えましたが、約300GiBには時間がかかります。少なくともファイルの存在を比較することはできますが、同じ実行でサイズと日付を比較することをお勧めします。

私はこの解決策を知っています。

diff <(ls -R $PATH1) <(ls -R $PATH2)

しかし、出力を読みにくい。むしろ、片側にファイルごとに1行だけ見つけるのが良いです。また、両側で同じ順序でツリーをナビゲートするには、lsを使用する必要があります。ファイルシステムが異なるため、これは異なる場合があります。

私が最も得たいと思うのは、両方のパスをとり、必要な検査レベル(おそらくmacports以外のもの)のdiffを出力する怠惰な人のためのツールです。しかし、十分にヒットすることについては心配しない。

ベストアンサー1

解決策は次のとおりです。

rsync -nrv --delete dirA/ dirB/

2つのフォルダを同じにするのではなく、rsyncを使用してその内容のみを表示します。会議する。これが効果です-n。注意してください。このオプションを追加することを忘れないでください!

これは、目的の内容の詳細なリストを提供する-r再帰検索を意味します。別の項目を追加して、すべての同じ項目を一覧表示する-vこともできます。-v

--deleteソースに存在しないターゲットファイルの削除をシミュレートするようにrsyncに指示します。この-nフラグがないと、dirBフォルダはと同じになりますdirA

デフォルトでは、rsyncはファイル名とタイムスタンプのみを検証します。これはユーザーが要求したクイックオプションです。 diff 動作と同様の動作 (そして同じように遅い動作) が必要な場合は、-cチェックサム比較を強制するフラグを追加できます。

rsync -nrvc --delete dirA/ dirB/

dirA/および で末尾のスラッシュの使用法に注意してください。dirB/これは重要ですrsync。詳細については、rsyncマニュアルページをご覧ください。この強力なコマンドに慣れることをお勧めします。

おすすめ記事