Linux ext4で2つのファイルの属性を比較する方法

Linux ext4で2つのファイルの属性を比較する方法

もちろん、cmp(1)は両方のファイルの内容が同じかどうかを知らせますが、バックアップから復元をテストするために関連(!)ファイルのプロパティも比較したいと思います。

だから私が次のような簡単なことをするなら

mv foo.bar foo.bar.save
deja-dup --restore foo.bar # or some other backup tool

foo.barとfoo.bar.saveのプロパティを比較し、シェルスクリプト(または同様のスクリプト)で十分な同等性をテストするにはどうすればよいですか?私はできます。

stat foo.bar{,.save}

そして、inode、atime、ctime(そして何らかの理由でリンク数)を無視することを覚えながら、出力を手動で確認しますが、これはエラーが発生しやすいです。 SELinuxやその他の属性を含むcmp-with-attributesツールはありますか?理想的には、すべてのシステムでFedoraおよびext4ファイルシステムで実行する必要があります。 Perlで何かを変更する必要がありますか?

(バックアップが正常に動作していることをテストしないと、バックアップする意味はありません。)

ベストアンサー1

getallattr() {
  [ -L "$1" ] || lsattr -d -- "$1" | sed 's/ .*//;q'
  getfattr -hdm- -- "$1" | tail -n +2 | sort
  stat -c '%u %g %a %s %x %y' -- "$1"
}

すべての属性を検索します(少なくとも簡単に復元できる属性)。組み込みではstatなく、zshまたは互換性のGNU実装を想定しています。statコンテンツダイジェスト/チェックサム形式を含めることもできます(例:sha1sum/b2sum...)。

それから

diff <(getallattr file1) <(getallattr file2)

(ksh、zsh、bash構文)。

おすすめ記事