Пожалуйста, помогите zip, gz, tar, .... нормальному текстовому файлу и рекомендуйте использовать тот, который уменьшает размер.
2 ответа
Компрессионные программы
Включая некоторые классические, но теперь устаревшие команды, утилиты чистого сжатия:
- 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.
zip , gzip (gz) и tar могут сжимать файл, но есть различия.
zip
может сжать несколько файлов и поместить их в один .zip
-файл, оставив исходные файлы в покое.
С другой стороны, gzip
создает один файл .gz
каждого файла и заменяет прежние права доступа и права владения.
tar
был просто упаковщиком файлов. Он принимает входные данные и создает один .tar
файл, содержащий структуру каталогов, сохраняющую партию, и разрешения. Позже они добавили сжатие сжатия, обычно используется опция -z
(это gzip)
Я предлагаю вам использовать zip, если у вас нет веских причин не делать этого. Это поддерживается на большинстве (все?) ОПЕРАЦИОННЫЕ СИСТЕМЫ.