「.tar」ファイルを作成するbashスクリプトがあります。ファイルが作成されたら、整合性をテストし、整合性が悪い場合はルートユーザーにメールを送信します。
コマンドtar -tf /root/archive.tar
を使用してファイルの整合性を確認する必要があることはわかっていますが、これをbash ifステートメントに実装してエラーを確認するにはどうすればよいですか?
tar
が入力でエラーを検出した場合、ゼロ以外の終了値でexit(3)
¹になります。これは、ほとんどのtar
実装で— t
を使用してアーカイブコンテンツを一覧表示するときにも行われます。したがって、tar
の終了値を確認して、問題が発生していないかどうかを確認できます。
if ! tar tf /root/archive.tar &> /dev/null; then
write_an_email_to_root
fi
tar
がt
ですべてのエラーを見つけられない場合でも、アーカイブをstdout
に抽出し、stdout
を/dev/null
にリダイレクトできます。速度は遅くなりますが、信頼性が高くなります。
if ! tar xOf /root/archive.tar &> /dev/null; then
write_an_email_to_root
fi
¹この表記は、実際の呼び出しではなく、マンページを示します。 man 3 exit
を参照してください。
申し訳ありませんが、できません。tarにはテスト機能がないようです(たとえば、* nixを忘れて、それをwinrarでテストしようとすると、「コマンドはこのタイプのアーカイブではサポートされていません」)。
上記のコメントで私が指摘した方法では、tarは文字どおり内部CRCに比較期間がないため、エディターでtarアーカイブを変更すると、リストと抽出はエラーなく完璧に機能しますが、破損したデータを抽出します。
結論として、私はここで解決策を望んでいますが、解決策はありません。幸いにも2つの良いニュースがあります。
gzip、bzip2などのような別のプログラムで圧縮されていない非常にまれなtarアーカイブが存在する)したがって、そのプログラムにはテストソリューションがあり、圧縮しない人はちょっと不自由です、本当にラメ
私の個人的な問題については、幸運です、それを抽出した後、内部にすべてのファイルのCRCがあるmd5sumファイルを見つけました(ネットにarhive tarを配置し、それを圧縮したくない人でも、彼はまだ検証可能)