GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリを比較しますが、ファイルの内容は比較しませんか?

あり

diff -r

私はこのタスクを実行できますが、diffのため、非常に時間がかかります ファイルの内容を確認します。

2つのファイルのサイズ、最終更新日などが同じであると判断するものが必要です。ただし、ファイルを少しずつチェックする必要はありません(たとえば、ビデオに非常に時間がかかります)。

他に方法はありますか?

承認された回答:

rsyncは、デフォルトでは、ファイルメタデータのみを比較します。これは、タイムスタンプ、サイズ、および属性を意味します。とりわけ。ただし、ファイルの内容ではありません。

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

説明:

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

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

このように1文字のオプションを短くすることができます

rsync -nai --delete source/ target/

同一のファイルに対して印刷された行も表示する場合は、-iを指定します。 2回

rsync -naii --delete source/ target/

出力例:

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

rsyncはメタデータのみを比較することに注意してください。つまり、ファイルの内容が変更されてもメタデータが同じままである場合、rsyncはそのファイルが同じであると報告します。これはありそうもないシナリオです。したがって、メタデータが同じである場合はデータが同じであると信頼するか、ファイルデータを少しずつ比較する必要があります。

ボーナス:進捗情報については、こちらを参照してください:rsyncの完了までの時間または残りの作業を見積もりますか?


Linux
  1. inode でファイルを操作できないのはなぜですか?

  2. Linuxは上書きではなくコピーする方法は?

  3. RSYNC がソース ディレクトリを削除しない

  1. Linuxでファイルとディレクトリを隠す簡単な方法

  2. ファイル名を別のディレクトリに読み取ってファイルを移動しますか?

  3. 2 つの tarball のコンテンツを比較する方法

  1. コアがダンプされましたが、コア ファイルが現在のディレクトリにありませんか?

  2. LinuxのNOTディレクトリのディレクトリ内のファイルのみを削除します

  3. bash - すべてのディレクトリ (およびコンテンツ) を削除しますが、pwd 内のファイルは削除しません