Пожалуйста, помогите zip, gz, tar, .... нормальному текстовому файлу и рекомендуйте использовать тот, который уменьшает размер.

2 ответа2

3

Компрессионные программы

Включая некоторые классические, но теперь устаревшие команды, утилиты чистого сжатия:

  • pack (unpack, pcat) - расширение .z
  • сжатие (uncompress) - расширение.Z
  • gzip (gunzip, gzcat, ...) - расширение .gz
  • bzip2 (bunzip2, bzcat, ...) - расширение .bz2
  • xz (unxz, xzcat, ...) - расширение .xz

Архиваторы

Кроме того, существуют архиваторы - программы, которые собирают несколько файлов в один вывод (который может быть файлом ленты, но обычно его больше нет). Они включают:

  • архив
  • tar - архив ленты
  • cpio - архиватор Unix System III
  • pax - гибрид POSIX cpio и дегтя

И затем есть гибридная программа, происходящая из Windows:

  • zip - архивировать и сжимать

В настоящее время GNU Tar может обрабатывать как сжатие, так и архивирование, поэтому он обычно является инструментом выбора для архивирования.

Сравнение программ сжатия

Я перечислил компрессоры в порядке их появления, что также увеличивает эффективность. Оригинальная упаковка была довольно слабой по современным стандартам; Сжатие может превзойти упаковку с достаточным запасом. Тем не менее, gzip сжимал сжатие со значительным запасом, и в течение довольно долгого времени использовался почти все время, потому что это было примерно так же хорошо, как и получалось. Это стандартное сжатие, используемое во многих программных архивах. Например, CPAN (Comprehensive Perl Archive Network) использует сжатые tar-файлы, как и GNU до недавнего времени, но теперь они иногда также предоставляют файлы xz или bzip2. Bzip2 распаковывает gzip - новый компрессор должен быть лучше принят, и его прямая поддержка встроена в последние версии GNU Tar. Наконец, xz - относительно новый участник (возможно, последние 2-3 года), но он превосходит все остальное.

Zip вписывается в порядок сжатия примерно на том же уровне, что и gzip или bzip2; Это довольно хорошее сжатие, но оно возникло в Windows и там было стандартным. Однако вы можете получить zip и zip для Unix (так же, как вы можете получить другие программы для Windows). Таким образом, zip-файлы имеют тенденцию указывать ориентацию Windows.

И pack, и compress функционально устарели, но они все еще распознаются gzip и могут быть распакованы им. Их существование объясняет, откуда взялась нотация «z» и почему не используется простая «z».

Архиваторы

CPIO

В некоторых отношениях программа cpio превосходила ленты формата tar (и для tar существует несколько форматов, но вам вряд ли когда-нибудь придется беспокоиться об этих деталях). Самым заметным отличием было то, что cpio считывал имена файлов, подлежащих резервному копированию, со стандартного ввода - по одному имени в строке. Это позволило быть избирательным при резервном копировании каталога. В отличие от этого, tar получает имя каталога и выполняет резервное копирование всего, что находится под ним (если только это не GNU Tar и ему не предписано исключать содержимое). Вы также можете использовать cpio в режиме «pass» (cpio -p) для копирования материалов из одного места в другое. Тем не менее, GNU Tar включает функции чтения файлов из файла, его легче использовать и он более широкодоступен.

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

В наши дни вы, вероятно, никогда не будете использовать cpio, но его сквозной режим все еще полезен, если вы знакомы с ним.

find . -name '*.[ch]' -print |
cpio -pdmB /some/where/else

Эквивалент в GNU Tar:

find . -name '*.ch' -print |
tar -cf - -T - |
tar -xf - -C /some/where/else

чел

Первоначальный стандарт POSIX (1988 г.) был создан в то время, когда за tar и cpio шла война, и pax был форматом и программой архива POSIX, которая была компромиссом. Тем не менее, он никогда не использовался широко - он страдал от того, чтобы не быть tar или cpio Он был призван принести мир между воюющими лагерями; это не удалось.

GNU Tar поддерживает различные форматы pax (две версии).

GNU Tar

GNU Tar позволяет вам указать алгоритм сжатия, который будет использоваться при создании архива, и автоматически определяет (известные) форматы при извлечении из архива. Следовательно:

tar -czf /tmp/wotnot.tar.gz some-sub-directory
cd /some/other/place
tar -xf  /tmp/wotnot.tar.gz

Это использует сжатие GZIP. Расширение .tgz также используется для обозначения сжатых tar-файлов:

tar -czf /tmp/wotnot.tgz some-sub-directory
cd /some/other/place
tar -xf  /tmp/wotnot.tgz

Если вы используете gunzip для файла .tgz, вы получите файл .tar, оставленный позади; если вы затем скопируете файл, вы получите файл .tar.gz.

Чтобы использовать сжатие bzip2:

tar -cjf /tmp/wotnot.tar.bz2 some-sub-directory
cd /some/other/place
tar -xf  /tmp/wotnot.tar.bz2

Чтобы использовать сжатие xz:

tar -cf /tmp/wotnot.tar.xz --use-compress-program=xz some-sub-directory
cd /some/other/place
tar -xf /tmp/wotnot.tar.xz --use-compress-program=xz

AFAIK, нет опции GNU Tar, чтобы сделать это (сжатие xz) автоматически. (Опция '-j' является относительно недавним дополнением к GNU Tar.) Вы можете назначить любую программу сжатия через --use-compress-program , если она подчиняется тому же универсальному интерфейсу, что и gzip, bzip2 - и xz подчиняется ей. Для гипотетической программы сжатия "молния":

zipper -c     -- compresses standard input to standard output
zipper -d     -- decompresses
zipper -c -d  -- decompresses standard input to standard output

Одна из странностей GNU Tar: оригинальная программа tar была написана в самые первые дни Unix, до того как нотация «-option» была стандартизирована. Следовательно, черта перед первым параметром tar является необязательной по сей день. Вы увидите, что люди используют ' tar cvf /tmp/tarfile . или эквивалент без черты.


Какую команду использовать?

Это зависит от вашей целевой аудитории. Те, на Windows, как почтовый индекс. Материал, предназначенный для Windows, должен использовать этот формат.

Те, кто работает в основном с Unix и его производными, не любят zip: вместо этого используйте GNU Tar. Для наиболее распространенного и надежного сжатия используйте gzip. Если ваша аудитория в основном обновлена, рассмотрите возможность использования bzip2. Если вы можете диктовать им, используйте xz, потому что он значительно уменьшает файлы - лучше, чем любой другой.

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

Для простого сжатия одного файла я бы использовал xz или bzip2.

1

zip , gzip (gz) и tar могут сжимать файл, но есть различия.

zip может сжать несколько файлов и поместить их в один .zip -файл, оставив исходные файлы в покое.
С другой стороны, gzip создает один файл .gz каждого файла и заменяет прежние права доступа и права владения.
tar был просто упаковщиком файлов. Он принимает входные данные и создает один .tar файл, содержащий структуру каталогов, сохраняющую партию, и разрешения. Позже они добавили сжатие сжатия, обычно используется опция -z (это gzip)

Я предлагаю вам использовать zip, если у вас нет веских причин не делать этого. Это поддерживается на большинстве (все?) ОПЕРАЦИОННЫЕ СИСТЕМЫ.

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