Зависит ли скорость вывода файла tar.gz от размера tar? - PullRequest
3 голосов
/ 30 июня 2011

Я использую функцию tf для отображения содержимого файла tar.gz. Это довольно большой ~ 1 ГБ. Существует около 1000 файлов, организованных в файловой структуре год / месяц / день.

Операция листинга занимает немного времени. Похоже, листинг должен быть быстрым. Может ли кто-нибудь просветить меня о внутренностях?

Спасибо -

Ответы [ 2 ]

2 голосов
/ 04 сентября 2013

Tar имеет простую файловую структуру.Если вы хотите перечислить их, вы должны проанализировать все файлы.Если вы хотите найти один файл, вы можете остановить процесс.Но должен быть уверен, что архив имеет только одну версию файла.Это типично для упакованных архивов, потому что добавление к ним не поддерживается.например, вы можете сделать так:

tar tvzf somefile.gz|grep for find something|\
while read file; do foundfile="$file"; last; done

в этом цикле прервется и не будет читать все, но только от начала до позиции файла.

Если вам нужно сделать что-то еще со списком, сохраните его в любой временный файл.Вы можете сжать этот файл для сохранения места, если это необходимо:

tar tvzf somefile.gz|gzip >temporary_filelist.gz
2 голосов
/ 30 июня 2011

Взгляните, например, на wikipedia , чтобы убедиться, что каждому файлу внутри tar предшествует заголовок.Чтобы проверить все файлы внутри tar, необходимо прочитать весь tar.

В начале файла tar нет индекса, который бы указывал на его содержимое.

...