Можно ли перечислить все файлы в файле * .tar.gz без сканирования всего содержимого?

Я знаю только так:

tar --full-time -tvf /path/to/file.tar.gz 

Но это делает tar для сканирования всего архива, и это занимает много времени, если оно очень большое. Мой вопрос, может быть, есть способ отсканировать только начало, только заголовок какого-то типа, как это происходит в других форматах, таких как * .7z или * .rar?

2 Solutions collect form web for “Можно ли перечислить все файлы в файле * .tar.gz без сканирования всего содержимого?”

Короткий ответ – нет."

7Zip , RAR, zip , et al. , – все это двухфункциональные программы / форматы файлов. Они сжимают отдельные файлы, а затем архивируют сжатые результаты. Это приводит к части файла, который не сжат, но, в свою очередь, позволяет программам получать отдельные файлы.

gzip (часть .gz ) отличается. Он сжимает только один байтовый поток. Байт-поток предоставляется tar . bzip2 ( .bz2 ) делает то же самое, хотя с другим алгоритмом. tar – программа архивирования, а gzip – программа сжатия. Чтобы вообще добраться до архива, поток сначала должен быть распакован. Это может произойти только через весь файл . Затем, и только тогда, смогите добраться до отдельных частей архива.

Причина, по которой вы не видите здесь шаг gzip заключается в том, что он был встроен в tar , а не непосредственно сам по себе , но, благодаря знанию tar чтобы передать свой выходной поток в gzip .

Нет, это невозможно. См. Википедию для описания формата файла tar. В принципе, это всего лишь чередующаяся последовательность заголовков и содержимого файла . В начале нет оглавления, вся информация о каждом файле находится в заголовке файла .

Заголовок включает в себя размер файла, поэтому при простом перечислении содержимого читатель может пропустить чтение всех блоков содержимого, обратившись к началу следующего заголовка. Однако, если tar-файл сжат, что невозможно, потому что сначала нужно разжать содержимое, чтобы он мог пропустить соответствующее количество несжатых байтов.

  • Тар папку без .git файлов?
  • деформировать, но сохранить -v подробный вывод отдельно от STDERR
  • Как подключиться к Tar с помощью BASH?
  • HP-UX 9: резервная файловая система с использованием tar
  • debootstrap завершается частично через "stdin: не в сжатом формате"
  • Extrat tar "Не удается открыть: имя файла слишком длинное"
  • как включить или добавить / dev с tar -one-файловой системой
  • Как проверить, содержит ли каталог те же файлы в архиве TAR?
  • Как «снимок» chroot?
  • восстановить частично перезаписанную ленту из tar -c
  • sudo tar изменяет права собственности на файлы неизвестного пользователя
  • Interesting Posts

    unpigz (и untar) в определенный каталог

    $ HOME / .cache – на небольшом SSD или на жестком диске?

    Как я могу получить распечатку lp * всегда * меньше и односторонней?

    несколько контейнеров lxc, совместно использующих один и тот же пул ресурсов процессора и памяти

    Как проверить, установлен ли mysql с помощью сценария bash?

    Как указать произвольное имя для регистрации в vim

    Программное обеспечение RAID10 setup пишет небольшие файлы очень медленно, это нормально?

    Система не будет загружаться, потому что загрузочный раздел отсутствует?

    Как перекрестно скомпилировать Chromium для ARM?

    OpenBSD на SDHC или карте microSDHC – советы

    libvirt: команда запускать все гостевые виртуальные машины с включенным автозапуском

    / usr / bin / ptx: Можете ли вы предоставить пример использования или два?

    Мой принтер сохраняет некоторые воспоминания от настроек предыдущих заданий

    Как создать переменную только для размера, используемого и доступного для df?

    Есть ли возможность установить родительский процесс при создании нового процесса?

    Linux и Unix - лучшая ОС в мире.