5

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

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

2 ответа2

2

Итак, у вас есть набор файлов, которые вы сделали архивом, используя "tar", который создаст один выходной файл. Затем вы использовали "gzip", чтобы сжать этот файл ".tar" в ".zip".

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

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

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

  1. распакуйте (распакуйте ) файл «.tar» из файла «.zip» и разверните полученный файл «.tar» в базовый набор файлов

  2. создать файл ".zip" непосредственно из набора файлов.

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

1

-z означает ungzip или gzip файл смолы. Тар сам в связках без сжатия. Когда вы 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 что является лучшим планом, чем обычный MANIFEST.

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

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

sha1sum -c ./sha1sum

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .