1.6 どのファイルが異なるかをまとめる

1.6 どのファイルが異なるかをまとめる

そして

diff -r

diffこれは可能ですが、ファイルの内容を確認するのに時間がかかります。

両方のファイルがサイズ、最後の修正などが同じであることを確認したいと思います。ただし、ファイルを少しずつ確認することはできません(たとえば、ビデオには時間がかかります)。

別の方法がありますか?

答え1

rsyncはデフォルトでメタデータのみを比較します。

rsync -n -a -i --delete source/ target/

説明する:

  • -n比較しますが、実際にコピーまたは削除しないでください。 <--これが重要です! ! 1
  • -aすべてのメタデータの比較
  • -iファイルごとに1行の情報を印刷します。
  • --deleteまた、ターゲットにはあるがソースにはないファイルも報告します。

注:ディレクトリ名の後にスラッシュを追加することは非常に重要です。これはrsyncの問題です。

また注:rsyncは強力なツールです。上記の説明のいくつかは、この質問の文脈で非常に単純化されています。特に-a「すべてのメタデータ」よりはるかに複雑です。

これにより、文字オプションを短縮できます。

rsync -nai --delete source/ target/

-i同じファイルに関する情報を印刷するために2回提供できます。

rsync -naii --delete source/ target/

出力例:

.d..t...... ./            (directory with different timestamp)
>f.st...... modifiedfile  (file with different size and timestamp)
>f+++++++++ newfile       (file in source but not in target)
*deleting   removedfile   (file in target but not in source)
.f          samefile      (file that has same metadata. only with -ii)

rsyncはメタデータのみを比較することを忘れないでください。つまり、ファイルの内容は変更されますが、メタデータは同じままである場合、rsyncはファイルを同じと報告します。これは可能性の低いシナリオです。通常、データが変更されるとメタデータも変更されます。したがって、メタデータが同じ場合は、データも同じであると信頼するか、ファイルデータをビット単位で比較する必要があります。

報酬:進捗状況についてはこちらをご覧ください。rsyncを完了するのに必要な時間や労力を推定しますか?

答え2

先ほど見つけましたtree

tree old_dir/ > tree_old
tree new_dir/ > tree_new
vimdiff tree_old tree_new

答え3

-q--brief)オプションをdiff -r()と一緒に使用してくださいdiff -qrinfoGNUページからdiff

1.6 どのファイルが異なるかをまとめる

違いが何であるかを気にせずにファイルが異なることを確認したい場合は、サマリー出力形式を使用できます。この形式では、diff' simply reports whether files differ. The--brief '(`-q')オプションはファイル間の違いを表示するのではなく、この出力形式を選択します。

この形式は、2つのディレクトリの内容を比較するときに特に便利です。また、「diff」は違いがあることがわかったらすぐにファイル分析を中止することができるため、一般的な行別比較よりはるかに高速です。

これは1行ずつ比較するのではなく、ファイル全体を比較してプロセッサ速度を大幅に向上させます(必要なもの)。

答え4

2つのファイルシステムブランチにあるファイルが異なるかどうか(ファイルの内部を確認せずに)知りたい場合は、次のことができます。

find /opt/branch1 -type f | sort | xargs -i md5sum {} >/tmp/branch1;
find /opt/branch2 -type f | sort | xargs -i md5sum {} >/tmp/branch2;
diff /tmp/branch1 /tmp/branch2;

ファタイ

関連情報