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

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

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

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

  • Сценарий Bash для автоматического резервного копирования tar выбранных файлов и каталогов
  • Проверка резервной копии .tar.gz
  • Untar без справочника верхнего уровня
  • Найти рекурсивно все архивные файлы различных форматов архивов и искать их для шаблонов имен файлов
  • find -exec ls -lR {} \; возвращает каждый элемент дважды
  • Помощь в проверке целостности файлов TAR для резервного копирования
  • Как проверить, содержит ли каталог те же файлы в архиве TAR?
  • извлеките архив tar в существующий каталог в git-bash
  • 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-файл сжат, что невозможно, потому что сначала нужно разжать содержимое, чтобы он мог пропустить соответствующее количество несжатых байтов.

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