Wie verifiziert man ein bereits geschriebenes Tar-Archiv?

15

Ich weiß, dass Sie Folgendes tun können - Wenn Sie ein Archiv erstellen, aber wie überprüfen Sie ein bereits erstelltes Archiv? tvWf sagt, es ist kein gültiges Teerarchiv?

$ 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

Das Gleiche passiert sowohl mit tar 1.15 (das ist die Standardeinstellung für Centos 5) als auch mit 1.26 (die neueste Version von Gnu).

cespinoza
quelle

Antworten:

8

Sie können nicht Wmit verwenden 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

Ich glaube, tallein reicht aus, um das Archiv zu testen.

EightBitTony
quelle
tAlleine listet nur den Inhalt des Archivs auf. Ich möchte überprüfen, ob die Dateien im Teer den gleichen Inhalt haben wie die Originale (noch im Dateisystem), was meiner Meinung Wnach zu tun war (richtig?).
Cespinoza
1
W macht das nur beim Schreiben des Archivs. Wenn Sie sicherstellen möchten, dass der Inhalt Byte für Byte übereinstimmt, müssen Sie ihn irgendwo extrahieren und die Dateien unterscheiden / summieren.
EightBitTony
Nichts für mich: tar tvWf t.tar tar: --verify cannot be used with -t:tar (GNU tar) 1.27.1
Tom Hale
13

GNU tarhat eine --compareOption. Weitere Informationen finden Sie im Abschnitt Vergleichen von Archivmitgliedern mit dem Dateisystem der Dokumentation.

jon
quelle
5
ZB tar -df /path/to/archive.tar.bz2werden Unterschiede zwischen Dateien im Archiv und im Dateisystem angezeigt, wodurch relative Pfade im Archiv gegen das aktuelle Arbeitsverzeichnis aufgelöst werden.
Walf
3

Jörg Schillings hat stareine Diff- Option, mit der Dateien in einem Tar-Archiv mit ihrem Original verglichen werden können. Sie können angeben, was als Unterschied erkannt werden soll.

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).

Beachten Sie, dass es testfileunterschiedliche Größen und Daten hat. Wenn ich die Zeiten (einschließlich der Zugriffszeit!) Nicht ausgeschlossen hätte, hätte dies auch die Zugriffszeit angegeben und auch alle Dateien aufgelistet, deren Zeiten sich geändert hatten, indem ich sie nur angeschaut hätte.

Seit dem Untergang von BerliOS starist Sourceforge zu finden . Es ist sehr portabel und lässt sich problemlos auf den meisten Unixoid-Systemen und Unixoid-Look-Alikes kompilieren.

Tatjana Heuser
quelle
Aktuelle Quellen sind im schilytoolsQuellpaket enthalten.
Schily