tarアーカイブが作成されたかどうかを確認するには?

tarアーカイブが作成されたかどうかを確認するには?

アーカイブを作成するときに使用できることを知っていますが、-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の最新バージョン)でも同じことが起こります。

答え1

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

答え2

Wと一緒に使用することはできませんt

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私はこれだけでプロファイルをテストするのに十分だと思います。

答え3

starヨルグ・シリングス違い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が終了した後、次の場所starにあります。ソースフォージ。移植性に優れ、ほとんどのUnixシステムと同様のUnixシステムで簡単にコンパイルできます。

答え4

検証オプションは、作成後ではなく作成中に使用する必要があります。また、後で圧縮が追加される予定です。

%> tar -cvpWlf  test.tar sh.save
sh.save/
sh.save/test.tar
sh.save/Downloads/
sh.save/mount.sh
sh.save/Documents/
sh.save/skip_dirs_in_find.sh
Verify sh.save/
Verify sh.save/test.tar
Verify sh.save/Downloads/
Verify sh.save/mount.sh
Verify sh.save/Documents/
Verify sh.save/skip_dirs_in_find.sh

tarは "--compare"オプションを提供しますが。

man tar:

-d, --diff, --compare
アーカイブとファイルシステムの違いを見つけます。引数はオプションで、比較するアーカイブメンバーを指定します。指定しない場合は、現在の作業ディレクトリとみなされます。

関連情報