Быстрое перечисление содержимого большого архива tar

5

Мне нужно перечислить содержимое довольно большого (gzipped) архива tar (около 37 ГБ) tar -ztvf archive берет навсегда. Есть ли способ быстро получить этот список? Возможно, только перечисляя содержимое до определенной глубины каталога?

Мог ли я что-то сделать во время упаковки архива, чтобы ускорить вывод содержимого?

Thomas Arildsen
источник
1
Я думаю, что в следующий раз я архивирую большие куски файлов, я собираюсь попробовать Дар вместо.
Thomas Arildsen
2
Не относится напрямую, но напомнил мне о: xkcd.com/1168
Kevin Fegan

Ответы:

2

Итак, у вас есть набор файлов, которые вы сделали архив, используя «Деготь» , который создаст один выходной файл. Затем вы использовали "GZIP" сжать это ".Tar" файл в ".Zip" ,

Если это так, то процесс получения списка всех файлов в ".Tar" файл, требует, чтобы ".Tar" файл должен быть полностью с расстегнутой молнией от ".Zip" файл, перед содержанием ".Tar" файл может быть в списке.

Это всегда займет больше времени, чем получение списка файлов, которые хранятся «напрямую» в ".Zip" файл. Если файл большой, это время может быть значительным.

Если вы хотите сократить время, необходимое для составления списка файлов в сжатом архивном файле, то:

  1. расстегнуть молнию (распаковать) ".Tar" файл из ".Zip" файл и разверните получившийся ".Tar" файл в базовый набор файлов

  2. создать ".Zip" файл прямо из набора файлов.

Таким образом, файлы в файле архива могут быть перечислены без распаковки архива.

Kevin Fegan
источник
За исключением того, что tar сказал, чтобы застегнуть их tar -zcvf, да. Тогда я не собираюсь сейчас конвертировать архив, так как он мне не понадобится после распаковки. Мне просто нужно было определить, какой из нескольких архивов содержал файл, который я искал.
Thomas Arildsen
1

-z значит ungzip или же gzip файл tar. Тар себе в пачки без сжатия. Когда вы gzip ничего не можете сделать, метаданные находятся в tar-файле, который сжимается,

$ gunzip -l co.tar.gz 
         compressed        uncompressed  ratio uncompressed_name
             177183             1044480  83.0% file.tar

Это все, что видит gzip. Тебе нужно убить оружие, чтобы вернуться к смоле. Unix способ обойти это просто генерировать манифест, find . > MANIFEST и отправить с этим. Однако есть и другие варианты, такие как использование .tar.gz просто отправьте другой формат, который не сжимает метаданные. Я думаю 7zip соответствует этому описанию.

В последнее время люди стали использовать sha1sum или же md5sum это лучший план, чем обычный манифест.

find destination/ -type f -exec sha1sum {} +; > sha1sum

Это также можно проверить довольно легко, но это не нужно, потому что и то и другое tar и gzip предоставляют контрольные суммы внутри,

sha1sum -c ./sha1sum
Evan Carroll
источник