現在、TARアーカイブをSDカードに次のように抽出しています。
tar xf ${ROOT}/rootfs.tar -C /cynox/${DRIVE}/${TARGET}
補足: rootfs.tar には組み込み Linux システム用のファイルが含まれています。これらのシステムの一部では、SD カードで何らかのデータ破損が発生します。これにより、ファイルが失われたり、ファイルの内容が破損したりして、組み込みシステムが正常に機能しなくなったり、起動できなくなったりする可能性があります。これは SD カード作成中の問題とは関係がない可能性が高いですが、確実にするために、その方向でも調査する必要があります。
後で SD カードの内容をソース TAR の内容と比較する最適な方法は何ですか?
Linuxで実用的かどうかは分かりませんが、思い浮かぶのは
- SD カードから新しいアーカイブを作成し、両方のアーカイブの MD5 を比較します (または、それらは何らかの理由で自然に異なるでしょうか?)
- ソース TAR を別の場所に抽出し、各ファイルの MD5 を計算してファイルごとに比較します (すべてのフォルダー/ファイルをクロールすることは現実的ですか?)
- SD カードの内容を、TAR ファイルのパックされた内容とファイルごとに直接比較する方法はありますか?
- フォルダー構造、ファイル/フォルダーのアクセス許可などに関して特別な検証が必要ですか?
Linux がこのタスクにどのような可能性を提供しているかはわかりませんので、可能であれば、提案、正しい方向への指針、例などをいただければ幸いです。
答え1
同じtar
ファイルを取得できたかどうかを確認するには、次のようにします (ここでは GNU を使用tar
)。
cd /where/it/was/extracted &&
tar tf /path/to/file.tar |
tar -T - --no-recursion -cf - |
cmp - /path/to/file.tar
所有権や時間を含むコンテンツとメタデータを比較することに注意してください。たとえば、ファイルを として抽出しなかった場合root
、所有権が異なる可能性があります。
tar
また、ファイルを作成したのと同じ実装を使用するようにしてくださいtar
。
答え2
各ファイルのチェックサムを比較します。
まず、rootfs
フォルダーで次のコマンドを発行します。
rootfs# find . -type f -print0 | xargs --null sha1sum --binary > ../rootfs.sum
次にtargetfs
、フォルダー内の各ファイルを確認します。
targetfs# sha1sum --check <PATH_TO_SUM_FILE> | grep FAILED