rsyncを使用して2つのディレクトリを比較し、違いのみを印刷できますか?テスト実行オプションがありますが、特定のレベルに詳細情報を増やすと、比較された各ファイルが表示されます。
ls -alR
diff
ソースコードにすべての行を異なるものにするハードリンクがあるため、ここにはオプションはありません。 (もちろんPerlを使用してこの列を削除できます。)
答え1
Nielsの回答(Googleを介してこの質問に遭遇した人全員の場合)に追加すると、基本的にrsync
ファイルサイズと変更時間のみを比較して違いがあるかどうかを確認します。 (他の場合はもっと作業を行いますが、同じ場合はそこで停止します。)
実際のファイルを比較したい場合コンテンツ、同じサイズと最後の修正時間を持つファイルについても、チェックサムを使用してファイルを比較するように指示-c
するフラグを追加しました。rsync
rsync -avnc $SOURCE $TARGET
(このオプションはrsyncにonより新しいファイルを-u
無視するように指示しますが、これは内容を比較する場合はおそらくやりたくありません。)$TARGET
$SOURCE
答え2
rsync -avun --delete
双方向で同様のタスクを実行する必要があるかもしれません。
しかし、実際に達成しようとしているものは何ですか?
修正する:
rsync -avun --delete $TARGET $SOURCE |grep "^deleting "
ターゲットディレクトリに存在しないファイルのリストを提供します。
「grep delete」は、各行が次を印刷するためです。削除ing..ファイル..
rsync -avun $SOURCE $TARGET
「他の」ファイル(新しいファイルを含む)のリストが提供されます。
答え3
あまり慣れていない人のためにrsync
:
rsync -rvnc --delete ${SOURCE}/ ${DEST}
-r
:ディレクトリに再帰。-v
:リストファイル)-n
:最も重要なこと - やるべきこといいえ何でも変えなさい。-c
:修正時間とサイズの代わりにチェックサムでコンテンツを比較します(-a
そうでない場合は使用されます)。--delete
:一方向の違いではなく、対称的な違いを見つけます。- 最後に、
/
「ディレクトリの内部を見て、その内容を比較してください」を意味します。コンテンツ目的地まで」。
一般的な出力を印刷します
rsync
。
- と<ファイル名>各「新しい」ファイルの1行に
${SOURCE}
- そして「<ファイル名>を削除」
${DEST}
.
- また、次の警告を印刷することもできます。「一般的でないファイル<ファイル名>をスキップする」シンボリックリンクの場合。
PS。私はこれが悪いPSであることを知っています。しかし、それは本当に急いで追加されました。それでも人々はこれが役に立つと思います。
ポリフェニレンスルフィド。または、次のことができます。
find $SOURCE -type f -exec md5sum {} \; | tee source.md5
find $DEST -type f -exec md5sum {} \; | tee dest.md5
ファイル名に改行文字が含まれていない場合は、ファイル自体だけで*.md5
なく両方のファイルをdiff
並べ替えることができます。 (これはファイルにのみ適用されます。つまり、両側の空のディレクトリは検出されません。)
答え4
あなたの質問でdiffを使用したくないことを理解しています。LSからしかし、ディレクトリからdiffを再帰的に使用することもできます。
diff -rq DIR1 DIR2