Як перевірити файл архіву 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

Ви не можете використовувати 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одного достатньо, щоб перевірити архів.


tпоодинці лише перераховано вміст архіву. Я хочу переконатися, що файли в тарі мають той самий вміст, що й оригінали (як і раніше у файловій системі W).
цеспіноза

1
W робить це лише при написанні архіву. Якщо ви хочете переконатися, що вміст є байтом для відповідності байтам, вам доведеться його дістати десь і розмежувати / сумувати файли.
EightBitTony

Чи не для мене tar tvWf t.tar tar: --verify cannot be used with -t:tar (GNU tar) 1.27.1
Том Хейл

14

У ГНУ tarє --compareваріант. Деталі див. У розділі Порівняння членів архіву із розділом Файлова система документації.


5
Наприклад, tar -df /path/to/archive.tar.bz2будуть відображені відмінності між файлами в архіві та файловою системою, вирішуючи відносні шляхи в архіві проти поточного робочого каталогу.
Walf

3

Joerg Schillings starмає різний варіант, який може порівнювати файли в архіві смоли з їх оригіналом. Ви можете вказати, що слід визнати різницею.

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як різного розміру та даних. Якби я не виключав часи (включаючи час доступу!), Він би також вказав час доступу, а також перерахував би всі файли, часи яких змінилися лише переглядаючи їх.

З часу загибелі БерліОС, starїї можна знайти на джерелі джерел . Він є дуже портативним і безболісно збирається на більшості однокласних систем та однотонних зовнішностей.


Останні джерела знаходяться у schilytoolsвихідному пакеті.
шичі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.