ファイルの属性も比較するLinuxディープdiffツールはありますか?


16

ファイルやディレクトリを再帰的に比較するdiffのようなLinuxツールがありますが、比較も追加されています:拡張属性、acl、seコンテキスト?


1
提供された回答は、たまに比較するために機能します。しかし、ソフトウェアをテストするときに、これらのタイプの比較を1時間に何回も行うには不十分です。これらの比較を含めるために、差分ソースコードを変更することがあります。
マイケルガンツ14年

回答:


7

私は、使用する前にこれをやったrsync -aHAX --delete追加して覚える-n-iフラグを。

これは少し直感に反しますが、私にはご容赦ください。主なrsyncコマンドは、2つのディレクトリを一緒に同期するために必要なものです。しかし-n -i、同期を行わない(つまり、ドライランを実行する)だけで、実行したこととその理由を出力するだけです。解析するのは素晴らしいことではありませんが、ファイル名を簡単に取得してパイプするlsか、同様のものを使用できます。

これは、mtimes、日付などを含むすべてを調べ、デバイスノード、ソケット、名前付きパイプなどをフォローしません。上記のコマンドラインは、ACLと拡張属性も調べます。オプションをrsyncに変更することで、見ているものを調整できます。1つのデバイスに制限し-x、ソフトリンクとハードリンクの動作などを変更します。


2

janosはすでに何をすべきかを言っています:

find /a -exec stat -c '%A %C %F %g %u %s %Y %n' {} \; >a
find /b -exec stat -c '%A %C %F %g %u %s %Y %n' {} \; >b

diff -u a b

そしてman 1 stat言う:

%A     access rights in human readable form
%C     SELinux security context string
%F     file type
%g     group ID of owner
%u     user ID of owner
%s     total size, in bytes
%Y     time of last modification, seconds since Epoch
%n     file name

ファイルの内容を比較するには、次を使用できます。

find -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 33 | cut -c 35-

as described here: http://www.commandlinefu.com/commands/view/3555/find-duplicate-files-based-on-size-first-then-md5-hash

このソリューションは実行可能なソリューションを提供しません。表示される差分はコンテキストがなく、読みにくいです。ファイル名とその違いを示すことができるものを探しています。完全に異なる獣である2つの発見のdiffではありません。
マイケルガンツ14年

1
GNUにfindは、GNU の機能がstat組み込まれています(そして、GNU statが数十年前に登場します)。また、比較する前に出力をソートすることもできます。そして、あなたが必要とする(cd /a && find . ...)すべての行が原因で異なりますそれ以外の場合は/a/bファイルパスに。
ステファンシャゼル14年

0

拡張属性を比較するために書いた簡単なbashスクリプトを次に示します。すべてのファイル名を出力し、属性の違いを出力します。

cd a
export relpath=[path/to/b/from/a]

for filename in $(find .);
do
    echo $filename;
    diff <(xattr -l $filename) <(xattr -l $relpath/$filename);
done

別の答えから借りて、これを次のstat代わりに使用するように変更できますxattr

for filename in $(find .);
do
    echo $filename;
    diff <(stat -c '%A %C %F %g %u %s %Y' $filename) <(stat -c '%A %C %F %g %u %s %Y' $relpath/$filename);
done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.