すでに書き込まれたtarアーカイブをどのように検証しますか?


15

アーカイブを作成するときに-Wを実行できることを知っていますが、どのようにして検証済みのアーカイブを作成しますか?tvWfは、有効なtarアーカイブではないと言いますか?

$ mkdir tmp
$ echo asdkfjh > tmp/a
$ echo qweroiu > tmp/b
$ ls
tmp
$ tar cvf archive.tar tmp
tmp/
tmp/a
tmp/b
$ tar tvWf archive.tar
tar: This does not look like a tar archive
tar: Skipping to next header
tar: VERIFY FAILURE: 1 invalid header detected
tar: Error exit delayed from previous errors

tar 1.15(centos 5のシステムデフォルト)と1.26(gnuの最新バージョン)の両方で同じことが起こります。

回答:


8

あなたは使用することはできませんWt

mkdir tmp
echo bdb > tmp/a
echo bdb > tmp/b

tar cvf archive.tar tmp
tmp/
tmp/a
tmp/b

ls -l archive.tar
-rw-r--r-- 1 tony tony 10240 Jun 23 05:57 archive.tar

tar tvf archive.tar
drwxr-sr-x tony/tony         0 2011-06-23 05:57 tmp/
-rw-r--r-- tony/tony         4 2011-06-23 05:57 tmp/a
-rw-r--r-- tony/tony         4 2011-06-23 05:57 tmp/b

tar tvWf archive.tar
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

tアーカイブをテストするには、1 人で十分だと思います。


t単独でアーカイブのコンテンツをリストします。tar内のファイルが元のファイル(まだファイルシステム上にある)と同じ内容を持っていることを確認したいのですが、どうWすればよいのか(右?)
セスピノザ

1
Wは、アーカイブを書き込むときにのみこれ行います。コンテンツがバイトマッチのバイトであることを確認する場合は、どこかでそれを抽出し、ファイルをdiff / sumする必要があります。
EightBitTony

ではない私のために:tar tvWf t.tar tar: --verify cannot be used with -ttar (GNU tar) 1.27.1
トム・ヘイル

14

GNU tarには--compareオプションがあります。詳細については、ドキュメントの「アーカイブメンバーとファイルシステム比較」セクションを参照してください。


5
たとえばtar -df /path/to/archive.tar.bz2、アーカイブ内のファイルとファイルシステムの違いを表示し、現在の作業ディレクトリに対してアーカイブ内の相対パスを解決します。
ウォルフ

3

Joerg Schillingsにstardiffオプションがあり、tarアーカイブ内のファイルと元のファイルを比較できます。違いとして認識されるべきものを述べることができます。

0 1 newt pts/1 ~ 17> :> tmp/testfile
0 1 newt pts/1 ~ 19> star -cz tmp > tmp.tar
0 1 newt pts/1 ~ 19> echo bla > tmp/testfile
0 1 newt pts/1 ~ 20> star -z -diff diffopts=not,times < tmp.tar
diffopts=perm,symperm,type,nlink,uid,gid,uname,gname,size,data,rdev,hardlink,symlink,sympath,sparse,dir,acl,xattr,fflags
tmp/testfile: different size,data
star: 115 blocks + 0 bytes (total of 1177600 bytes = 1150.00k).

testfileサイズとデータが異なると記載されていることに注意してください。時間(アクセス時間を含む!)を除外していなかった場合は、アクセス時間も表示され、時間を変更したすべてのファイルを一覧表示するだけで一覧表示されます。

BerliOSの終Since以来、sourceforgestarで見つけることができます。移植性が高く、ほとんどのunixoidシステムとunixoidの類似物で簡単にコンパイルできます。


最近のソースはschilytoolsソースパッケージに含まれています。
ずんぐり
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.