Linux чем сжать архив

Как заархивировать файлы и каталоги в Linux

Zip — это наиболее широко используемый формат архивных файлов, поддерживающий сжатие данных без потерь.

Zip-файл — это контейнер данных, содержащий один или несколько сжатых файлов или каталогов. Сжатые (заархивированные) файлы занимают меньше места на диске, их можно перенести с одного компьютера на другой быстрее, чем несжатые файлы. Zip-файлы можно легко извлечь в Windows, macOS и Linux с помощью утилит, доступных для всех операционных систем.

В этом руководстве мы покажем вам, как архивировать (сжимать) файлы и каталоги в Linux с помощью команды zip .

zip Команда

zip — это утилита командной строки, которая помогает создавать Zip-архивы.

Команда zip имеет следующий синтаксис:

Чтобы создать Zip-архив в определенном каталоге, пользователю необходимо иметь права на запись в этот каталог.

Zip-файлы не поддерживают информацию о владельце в стиле Linux. Извлеченные файлы принадлежат пользователю, выполняющему команду.

Чтобы сохранить право собственности на файл и права доступа, используйте команду tar .

Утилита zip не устанавливается по умолчанию в большинстве дистрибутивов Linux, но вы можете легко установить ее с помощью диспетчера пакетов вашего дистрибутива.

Установите Zip в Ubuntu и Debian

Установите Zip на CentOS и Fedora

Как архивировать файлы и каталоги

Чтобы заархивировать один или несколько файлов, укажите файлы, которые вы хотите добавить в архив, через пробел, как показано ниже:

По умолчанию команда zip печатает имена файлов, добавленных в архив, и метод сжатия. Мы объясним методы и уровень сжатия позже в этом руководстве.

При указании имени архива Zip, если вы опускаете расширение .zip оно будет добавлено автоматически, если имя архива не содержит точки. zip archivename.zip filename создаст архив с тем же именем, что и zip archivename filename .

Чтобы подавить вывод команды zip , используйте параметр -q :

Часто вы создаете Zip-архив каталога, включающего содержимое подкаталогов. Параметр -r позволяет рекурсивно просматривать всю структуру каталогов.

Чтобы создать Zip-архив каталога, вы должны использовать:

Вы также можете добавить несколько файлов и каталогов в один архив:

Методы и уровни сжатия

Метод сжатия Zip по умолчанию — deflate . Если утилита zip определяет, что файл нельзя сжать, она просто сохраняет файл в архиве, не сжимая его с помощью метода store . В большинстве дистрибутивов Linux утилита zip также поддерживает метод сжатия bzip2 .

Чтобы указать метод сжатия, используйте параметр -Z .

Команда zip позволяет указать уровень сжатия с помощью числа с префиксом от 0 до 9. Уровень сжатия по умолчанию -6 . При использовании -0 все файлы будут сохраняться без сжатия. -9 заставит команду zip использовать оптимальное сжатие для всех файлов.

Например, чтобы использовать уровень сжатия -9 , введите что-то вроде этого:

Чем выше уровень сжатия, тем интенсивнее процесс архивирования, и для его завершения потребуется больше времени.

Создание ZIP-файла, защищенного паролем

Если у вас есть конфиденциальная информация, которую необходимо сохранить в архиве, вы можете зашифровать ее с помощью параметра -e :

Вам будет предложено ввести и подтвердить пароль архива:

Создание разделенного Zip-файла

Представьте, что вы хотите сохранить Zip-архив на сервисе хостинга файлов, который имеет ограничение на размер загружаемого файла 1 ГБ, а ваш Zip-архив — 5 ГБ.

Вы можете создать новый разделенный Zip-файл, используя параметр -s с указанием размера. Множитель может быть k (килобайты), m (мегабайты), g (гигабайты) или t (терабайты).

Приведенная выше команда продолжит создание новых архивов в наборе после достижения указанного предельного размера.

Примеры ZIP

Создайте Zip-архив с именем archivename.zip, содержащий все файлы в текущем каталоге.

То же, что и выше, включая скрытые файлы (файлы, начинающиеся с точки):

Создайте Zip-архив с именем archivename.zip содержащий все файлы MP3 в текущем каталоге, без сжатия файлов.

Выводы

В Linux вы можете создавать Zip-архивы с помощью команды zip .

Чтобы распаковать ZIP-архив в системе Linux, вы можете использовать команду unzip .

Если вы хотите узнать больше о Zip, посетите страницу Zip Man .

Источник

Читайте также:  Какая эта кнопка windows

Инструменты сжатия файлов в Linux

Сжимать файлы и каталоги необходимо по нескольким причинам. Некоторые из наиболее очевидных преимуществ – это сохранение дискового пространства экономия полосы пропускания при использовании сети.

В этом руководстве мы обсудим различные методы сжатия данных и связанные с ними операции, которые увеличивают гибкость сжатия (например, архивирование).

Примечание: Все примеры выполнены на сервере Ubuntu 12.04, но инструменты будут работать аналогичным образом и в других дистрибутивах Linux.

Основы сжатия и архивирования

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

Сжатие с потерями и без потерь

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

Этот тип сжатия принципиально отличается от того, о чем мы будем говорить в этом руководстве. Это связано с тем, что MP3 создается путем анализа формы сигнала аудиофайла, в ходе которого выясняется, какие данные можно потерять, сохранив при этом общий звук оригинала.

Это метод называется сжатием с потерями, поскольку он действительно теряет информацию из исходного файла, которая не попадает в MP3. Конвертировать MP3 обратно в исходный файл невозможно.

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

Другим примером сжатия с потерями является изображение в формате JPEG. Чем больше оно сжато, тем больше данных теряется, и тем заметнее будет сжатие. Утилита сжатия JPEG попытается найти поля цвета, которые достаточно близки друг к другу, и заменяет все такие поля одним цветом. Чем больше степень сжатия, тем больше цветов будет объединено таким образом.

Альтернативным методом является сжатие без потерь; эта технология создает файл меньший, чем исходный, но такой файл можно использовать для восстановления исходного файла. В этом руководстве рассматривается только сжатие без потерь. Этот тип не использует методы аппроксимации для сжатия данных, вместо этого здесь применяются определенные алгоритмы для распознавания повторяющихся частей файла. Такие части удаляются и заменяется заполнителями. Дальнейшие повторения шаблона заменяются одним и тем же заполнителем.

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

Кроме того, современные методы сжатия без потерь считаются адаптивными. Это означает, что они не анализируют весь входной файл сразу и не создают из него «словарь» ссылочных подстановок. Вместо этого они анализируют файл по мере его поступления и переписывают словарь в зависимости от того, какие данные повторяются в файле. В процессе сжатия словарь постепенно становится более эффективным.

Основы архивирования

Под понятием архивирования данных обычно подразумевается их резервное копирование и сохранение в безопасном месте, часто в сжатом формате. «Архив» на сервере Linux в целом имеет несколько другое значение. Обычно архивы – это файлы tar.

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

В целом, tar – это формат, который обеспечивает удобное распространение, хранение, резервное копирование и управление группами связанных файлов.

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

Инструменты сжатия

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

Утилита gzip

gzip – это уже классический инструмент сжатия данных в Linux. Он появился в 1992 году и до сих пор находится в разработке.

Читайте также:  W500 windows 10 drivers

Инструмент gzip использует алгоритм сжатия DEFLATE (который также используется другими популярными технологиями, такими как PNG, HTTP, SSH).

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

Ещё одним преимуществом gzip является совместимость. Поскольку gzip – очень старый инструмент, почти все системы Linux независимо от возраста поддерживают gzip.

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

Обычно файлы gzip имеют расширение .gz. Чтобы сжать файл с помощью gzip, нужно ввести:

Команда сожмет файл и переименует его в sourcefile.gz.

Чтобы выполнить рекурсивное сжатие каталога, добавьте флаг –r:

gzip -r directory1

Эта команда сожмет все файлы в каталоге. Обычно этот метод использовать не рекомендуется; лучший результат можно получить путем архивации каталога и сжатия итогового файла.

Чтобы получить больше информации о сжатом файле, используйте флаг -l, который выдаст статистику:

gzip -l test.gz
compressed uncompressed ratio uncompressed_name
5133 14073 63.7% test

Чтобы передать результат другой утилите, вы можете отправить сжатый файл в стандартный вывод с помощью флага –с. В этом примере вывод будет перенаправлен обратно в файл:

gzip -c test > test.gz

Вы можете настроить оптимизацию сжатия, передав числовой флаг от 1 до 9. Флаг -1 (и его псевдоним –fast) выполняет самое быстрое, но наименее тщательное сжатие. Флаг -9 (и его псевдоним –best) – это, соответственно, самое медленное и самое тщательное сжатие. По умолчанию используется среднее значение -6.

gzip -9 compressme

Чтобы распаковать файл, добавьте флаг –d (также можно использовать псевдоним gunzip).

Инструмент bzip2

bzip2 – еще один популярный формат и инструмент сжатия. Он немного младше gzip, вышел в 1996 году. Сегодня bzip2 считается традиционной альтернативой gzip.

Если gzip работает на алгоритме DEFLATE, то инструмент bzip2 – это реализация алгоритма Берроуза-Уилера. Это различие в методологии приводит к тому, что инструмент bzip2 довольно сильно отличается от gzip.

Наиболее важным преимуществом bzip2 для большинства пользователей является более высокая степень сжатия, которая достигается за счет увеличения времени сжатия. Инструмент bzip2 может создавать значительно более компактные файлы, чем gzip, но для этого требуется гораздо больше времени (из-за более сложного алгоритма).

К счастью, на распаковку уходит гораздо меньше времени, чем на сжатие. Поэтому формат bzip2 часто используется для распространения файлов: потратив больше времени на сжатие, вы получаете файлы меньшего объема, которые легко распространять и можно быстро распаковать. На распаковку у bzip2 все же уходит намного больше времени, чем у gzip.

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

Обычно файлы, сжатые с помощью этого инструмента, имеют расширение .bz2.

Чтобы сжать файл, введите:

Эта команда сожмет файл и присвоит ему имя afile.bz2.

Вы можете передать флаг -s, чтобы утилита работала в режиме экономии памяти. Это понизит качество сжатия, но, с другой стороны, не потратит столько ресурсов.

bzip2 поддерживает числовые флаги, но их действие несколько отличается от флагов gzip. В bzip2 они представляют размер блока, который утилита использует при сжатии. Этот параметр определяет отношение использования памяти к сжатию, а не скорость. По умолчанию используется флаг -9 (относительно высокое использование памяти, но высокое качество сжатия).

Чтобы распаковать файл, используйте флаг –d:

bzip2 -d file.bz2

Эта команда вернёт распакованный файл по имени file.

Утилита xz

xz является относительно новым механизмом сжатия. Инструмент вышел в 2009 году и с тех пор стабильно обновляется.

Утилита xz использует алгоритм сжатия LZMA2. Этот алгоритм имеет более высокий коэффициент сжатия, чем предыдущие два, благодаря чему он отлично подходит для хранения данных на небольшом диске. Он создает файлы меньшего размера.

Читайте также:  Не пройдена проверка connectivity windows server 2016

Хотя сжатые с помощью xz файлы весят меньше, чем файлы, сжатые с помощью других утилит, для сжатия требуется значительно больше времени. Например, на сжатие довольно большого файла с аргументами и флагами у gzip уйдет около половины минуты, bzip2 может потратить где-то около минуты, а у xz эта операция может занять около четырех или пяти минут.

Инструмент сжатия xz также использует много памяти (иногда столько же, сколько и предыдущие инструменты). Конечно, если на сервере достаточно памяти, это не будет проблемой, но эту характеристику нужно учитывать при выборе.

Хотя сжатие может занять намного больше времени, чем хотелось бы, на распаковку времени уходит довольно мало. Конечно, скорость распаковки xz никогда не достигает показателей gzip, но обычно она значительно превышает скорость bzip2. Использование памяти приемлемое (но относительно других инструментов довольно высокое).

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

Ещё один недостаток xz – утилита не поддерживается некоторыми старыми системами.

Файлы, созданные с помощью xz, обычно используют расширение .xz.

Чтобы сжать файл, введите:

Эта команда создаст сжатый файл file.xz.

Запросить статистику сжатия можно с помощью флага –l:

xz -l test.xz
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 5,016 B 13.7 KiB 0.356 CRC64 test.xz

Если вам нужно отправить сжатые данные в стандартный вывод, используйте -с.

xz -c test > test.xz

Утилита xz также поддерживает числовые флаги. Чем меньше число, тем быстрее сжатие (-0 обеспечивает самую высокую скорость сжатия). По умолчанию используется значение -6.

Если вы хотите увеличить качество сжатия и не беспокоитесь о памяти и времени, которое уйдет на выполнение процедуры, используйте флаг –е, который включает режим сжатия «extreme». Его производительность можно настраивать с помощью числовых флагов.

xz -e -9 large_file

Чтобы распаковать файлы, используйте флаг –d.

xz -d large_file.xz

В результате получится распакованный файл large_file.

Архивирование и сжатие

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

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

Комбинация tar и gzip

Чтобы создать архив tar, который можно будет сжать утилитой gzip, передайте флаг –z. Он включает сжатие создаваемого архива. Перед флагами команды tar не ставится тире. Чтобы создать сжатый архив, обычно используется команда:

tar czvf compressed.tar.gz directory1

  • c архивирует каталог directory1.
  • v включает расширенный вывод.
  • z включает сжатие gzip.
  • f передаст вывод в сжатый файл compressed.tar.gz.

Как только файл будет создан, можно заглянуть внутрь. Для этого используйте флаг t вместо с.

tar tzvf compressed.tar.gz
drwxr-xr-x demouser/demouser 0 2014-03-19 18:31 directory1/
-rw-r—r— demouser/demouser 5458 2014-03-19 18:31 directory1/httpd.conf.orig
-rw-r—r— demouser/demouser 2295 2014-03-19 18:31 directory1/nginx.conf.orig
-rw-r—r— demouser/demouser 5458 2014-03-19 18:21 directory1/httpd.conf

Чтобы распаковать архив, используйте флаг x:

tar xzvf compressed.tar.gz

Структура каталогов архива будет перемещена в текущий каталог.

Комбинация tar и bzip2

Чтобы сжать архив с помощью bzip2, замените флаг z (который вызывает gzip) флагом j.

tar cjvf bzipcompressed.tar.bz2 directory2

Создав файл, вы можете просмотреть его:

tar tjvf bzipcompressed.tar.bz2
drwxr-xr-x demouser/demouser 0 2014-03-19 18:31 directory2/
-rw-r—r— demouser/demouser 5458 2014-03-19 18:31 directory2/httpd.conf.orig
-rw-r—r— demouser/demouser 2295 2014-03-19 18:31 directory2/nginx.conf.orig
-rw-r—r— demouser/demouser 5458 2014-03-19 18:21 directory2/httpd.conf

Чтобы распаковать архив в текущий каталог, введите:

tar xjvf bzipcompressed.tar.bz2

Комбинация tar и xz

Чтобы сжать архив с помощью xz, используйте флаг J:

tar cJvf xzcompressed.tar.xz directory3

Чтобы просмотреть содержимое файла, используйте:

tar tJvf xzcompressed.tar.xz
drwxr-xr-x demouser/demouser 0 2014-03-19 18:31 directory3/
-rw-r—r— demouser/demouser 5458 2014-03-19 18:31 directory3/httpd.conf.orig
-rw-r—r— demouser/demouser 2295 2014-03-19 18:31 directory3/nginx.conf.orig
-rw-r—r— demouser/demouser 5458 2014-03-19 18:21 directory3/httpd.conf

Чтобы распаковать архив в текущий каталог, введите:

tar xJvf xzcompressed.tar.xz

Заключение

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

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

Источник

Оцените статью