Создать архив 7z linux

Обновлено: 06.07.2024

Оригинал: How to install and use 7zip file archiver on Ubuntu Linux
Автор: Himanshu Arora
Дата публикации: 24 ноября 2016 г.
Перевод: А.Панин
Дата перевода: 10 апреля 2017 г.

Если вы используете Microsoft Windows и в процессе работы отправляете или принимаете файлы большого объема посредством сети, вы наверняка как минимум слышали (а может и пользовались) архиватором 7zip. Для тех же, кто не знает а данном инструменте, следует пояснить, что 7zip является передовым архиватором с открытым исходным кодом, который, по заявлению разработчика, "позволяет достичь максимальной степени сжатия данных".

Помимо собственного формата 7z, архиватор поддерживает множество других форматов архивов. Например, вы можете использовать его для создания и распаковки архивов следующих форматов: 7z, XZ, BZIP2, GZIP, TAR, ZIP и WIM. Однако, это еще не все, ведь 7zip может использоваться для распаковки архивов множества других форматов, включая AR, ARJ, CAB, CHM, CPIO, CramFS, DMG, EXT, FAT, GPT, HFS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR, RPM, SquashFS, UDF, UEFI, VDI, VHD, VMDK, WIM, XAR и Z.

В официальной документации архиватора говорится: "степень сжатия, достигаемая благодаря использованию нового формата 7z, превышает степень сжатия архивов формата ZIP на 30-50%". Ниже приведен список других возможностей 7zip с официального веб-сайта:

  • В случае использования форматов архивов ZIP и GZIP 7zip позволяет увеличить степень сжатия на 2-10% по сравнению с архиваторами PKZip и WinZip.
  • Поддерживается мощный алгоритм шифрования AES-256 для архивов форматов 7z и ZIP.
  • Имеется возможность создания самораспаковывающихся архивов формата 7z.
  • В комплекте поставки имеется компонент для интеграции с проводником Windows.
  • Приложение с графическим интерфейсом является мощным файловым менеджером.
  • Приложение с интерфейсом командной строки позволяет полноценно работать с архивами поддерживаемых форматов.
  • В комплекте поставки имеется плагин для файлового менеджера FAR Manager.
  • Приложение переведено на 84 языка.

Мы узнали о достаточном количестве преимуществ данного инструмента, не так ли? Но доступен ли он в Linux? Ну, да - существует порт версии с интерфейсом командной строки для Linux/Unix под названием p7zip.

В данной статье я расскажу вам о том, как установить и использовать p7zip в Linux. Учтите, что все инструкции и команды, приведенные в данной руководстве, были протестированы в системе Ubuntu 16.04 LTS.

Загрузка и установка 7zip

Вы можете без каких-либо сложностей загрузить и установить компоненты архиватора 7zip в Ubuntu с помощью следующей последовательности команд:

Использование 7zip

После установки пакета программного обеспечения p7zip в системе появляется утилита под названием 7z. Это синтаксис соответствующей команды:

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

Начнем с того, что разберемся с методикой создания архивов формата .7z с помощью данной команды. Для этого будем использовать директорию с именем files , содержащую четыре файла с приведенными ниже именами:


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

На приведенной ниже иллюстрации показан результат исполнения данной команды.


После успешного завершения исполнения данной команды в текущей директории будет создан файл с именем files.7z .


Теперь предположим, что вы случайно/умышленно удалили четыре файла из директории files .


В таком случае вам понадобится восстановить файлы путем их извлечения из только что созданного файла архива формата .7z . Для этой цели может использоваться параметр e аналогичным образом:


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


Архиватор 7zip также позволяет достаточно просто обновлять содержимое файла архива после его создания. Например, предположим, что вы создали архив и через некоторое время поняли, что в него нужно добавить дополнительные файлы, после чего вместо удаления старого архива и создания нового просто обновили его содержимое, добавив в него все необходимые файлы.

К примеру, предположим, что директория files содержит 5 текстовых файлов и и нам нужно добавить в архив files.7z дополнительный файл с именем file5 . В этом случае достаточно воспользоваться параметром u архиватора 7zip. Это результирующая команда в действии:


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


Из приведенной выше иллюстрации очевидно, что после исполнения соответствующей команды архиватор подтвердил факт добавления в файл архива с именем files.7z нового текстового файла.

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

Помните о том, что вам придется добавить параметр -r к данной команде в том случае, если интересующий вас файл находится в одной из поддиректорий архива, хотя в официальной документации 7zip и не рекомендуется использовать его (я пользовался им несколько раз; во всех случаях он работал так, как предполагалось).

А это полезная информация, на которую разработчики утилиты 7z хотят обратить внимание пользователей:

НЕ ИСПОЛЬЗУЙТЕ архивы формата 7zip для создания резервных копий данных в Linux/Unix, так как 7zip не сохраняет информацию о владельце/группе владельцев файлов из архива.

Для создания резервных копий данных в Linux/Unix следует использовать архивы формата tar:

  • Создание резервной копии директории: $ tar cf - directory | 7za a -si directory.tar.7z
  • Восстановление файлов из резервной копии: $ 7za x -so directory.tar.7z | tar xf -

Если вам нужно отправлять файлы и директории (без информации об их владельцах) другим пользователям Unix/MacOS/Windows, вы можете использовать архивы формата 7zip.

  • Создание архива с содержимым директории: $ 7za a directory.7z directory

Не используйте параметр -r , так как он работает не так, как вы предполагаете.

Не используйте описание файлов, аналогичное "directory/*" из-за файлов ".*" (например, описание "directory/*" не будет соответствовать файлу "directory/.profile" ).

Для получения дополнительной информации об утилите 7z следует обратиться к ее странице руководства .

Заключение

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

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

Архивирование в Linux

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

Самой популярной для Linux утилитой для архивации есть tar. Она используется почти везде, для архивации исходников, упаковки пакетов. Для сжатия используются другие утилиты, в зависимости от алгоритма сжатия, например, zip, bz, xz, lzma и т д. Сначала выполняется архивация, затем сжатие, отдельными программами. Автоматический запуск некоторых утилит сжатия для только что созданного архива поддерживается в tar и других подобных программах с помощью специальных опций.

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

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

$ tar опции f файл_для_записи /папка_файлами_для_архива

А теперь разберем основные опции:

  • A - добавить файл к архиву
  • c - создать архив в linux
  • d - сравнить файлы архива и распакованные файлы в файловой системе
  • j - сжать архив с помощью Bzip
  • z - сжать архив с помощью Gzip
  • r - добавить файлы в конец архива
  • t - показать содержимое архива
  • u - обновить архив относительно файловой системы
  • x - извлечь файлы из архива
  • v - показать подробную информацию о процессе работы
  • f - файл для записи архива
  • -C - распаковать в указанную папку
  • --strip-components - отбросить n вложенных папок

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

tar -cvf archive.tar.gz /path/to/files

А чтобы распаковать архив tar linux:

tar -xvf archive.tar.gz

Очень просто запомнить для упаковки используется опция c - Create, а для распаковки - x - eXtract.

Сжатый архив создается точно так же, только с опцией -z, это в случае, если использовалось шифрование gizp, если нужно bzip то применяется опция -j:

tar -zcvf archive.tar.gz /path/to/files

$ tar -zxvf archive.tar.gz

Например, рассмотрим как заархивировать папку в Linux:

tar -zcvf home.tar.gz

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

Также можно убрать сжатие:

Утилиты сжатия мы рассмотрим ниже.

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

tar -rvf archive.tar file.txt

Для извлечения одного файла синтаксис тот же:

tar -xvf archive.tar file.txt

Можно извлечь несколько файлов по шаблону соответствия с помощью параметра wildcard, например, извлечем все php файлы:

tar -xvf archive.tar --wildcards '*.php'

По умолчанию распаковать архив tar linux можно в текущую папку с именем архива, чтобы распаковать в нужную папку используйте ключ -C:

tar -xvf archive.tar -C /path/to/dir

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

Shar позволяет создавать самораспаковывающиеся архивы. По сути, это скрипт оболочки, и для распаковки ему необходима оболочка Bash или другая совместимая с Bourne Shell. У Shar есть несколько преимуществ, но также он потенциально небезопасный, так как архив представляет собой исполняемый файл.

  • -o - сохранять архив в файл вместо стандартного вывода
  • -l - ограничить размер выходного файла
  • -L - ограничить размер выходного файла и разбить его на части
  • -n - имя архива не будет включено в заголовок
  • -a - разрешить автоматическую генерацию заголовков

Примеры использования shar для того чтобы заархивировать папку linux:

Создаем shar архив:

shar file_name.extension > filename.shar

Распаковываем shar архив:

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

  • - d - удалить модули из архива
  • - m - перемещение членов в архиве
  • - p - напечатать специфические члены архива
  • - q - быстрое добавление
  • - r - добавить члена к архиву
  • - s - создать индекс архива
  • - a - добавить новый файл к существующему архиву

Теперь рассмотрим примеры использования. Создадим статическую библиотеку libmath.a из объектных файлов substraction.o и division.o:

ar cr libmath.a substraction.o division.o

Теперь извлечем файлы из архива:

Таким образом, можно распаковать любую статическую библиотеку.

cpio - означает Copy in and out (скопировать ввод и вывод). Это еще один стандартный архиватор для Linux. Активно используется в менеджере пакетов Red Hat, а также для создания initramfs. Архивация в Linux для обычных файлов с помощью этой программы не применяется.

  • -a - сбросить время обращения к файлам после их копирования
  • -A - добавить файл
  • -d - создать каталоги при необходимости

Пример использования. Создаем cpio архив:

file1.o file2.o file3.o

ls | cpio -ov > /path/to/output_folder/obj.cpio

cpio -idv < /path/to folder/obj.cpio

Архивирование папки linux выполняется также само.

Сжатие архивов в Linux

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

Чаще всего применяется Gzip. Это стандартная утилита сжатия в Unix/Linux. Для декомпрессии используется gunzip или gzip -d Сначала рассмотрим ее синтаксис:

$ gzip опции файл

$ gunzip опции файл

Теперь разберем опции:

  • -c - выводить архив в стандартный вывод
  • -d - распаковать
  • -f - принудительно распаковывать или сжимать
  • -l - показать информацию об архиве
  • -r - рекурсивно перебирать каталоги
  • -0 - минимальный уровень сжатия
  • -9 - максимальный уровень сжатия

Примеры использования вы уже видели в описании утилиты tar. Например, выполним сжатие файла:

gzip -c файл > архив.gz

А теперь распакуем:

gunzip -c архив.gz

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

bzip2 - еще одна альтернативная утилита сжатия для Linux. Она более эффективная чем gzip, но работает медленнее. Для распаковки используйте утилиту bunzip2.

Описывать опции bzip2 я не буду, они аналогичны gzip. Чтобы создать архив в Linux используйте:

В текущем каталоге будет создан файл file.bz2

Новый и высокоэффективный алгоритм сжатия. Синтаксис и опции тоже похожи на Gzip. Для распаковки используйте unlzma.

Еще один высокоэффективный алгоритм сжатия. Обратно совместимый с Lzma. Параметры вызова тоже похожи на Gzip.

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

$ zip опции файлы

$ unzip опции архив

Чтобы создать Zip архив в Linux используйте:

zip -r /path/to/files/*

А для распаковки:

Как видите архивирование zip в Linux не сильно отличается от других форматов.

Выводы

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


7-Zip — свободный файловый архиватор с высокой степенью сжатия данных благодаря формату 7z с компрессией LZMA.

Кроме формата 7z поддерживает также ZIP, GZIP, BZIP2 и TAR. Может распаковать множество других форматов, например CAB, CHM, DEB, ISO, LZMA, MSI, RAR и другие.

Формат 7z достаточно популярен среди архивов, поэтому имеет смысл иметь поддержку 7z в системе, а также создавать свои архивы в виде 7z формата, ибо сжатие с помощью 7z на 30-50% лучше, чем сжатие с помощью ZIP.

Не стоит использовать 7-Zip в целях Linux/Unix backup, потому как 7-zip не сохраняет информацию о владельцах и правах файлов (owner/group) - для этого следует использовать TAR.

В Ubuntu можно использовать консольный порт 7-Zip под POSIX системы: p7zip.

Установка

Чтобы 7-Zip был доступен в Ubuntu, установите следующие пакеты при помощи терминала:

Установить 7-Zip также можно с помощью Центра приложений Ubuntu установив два нижеописанных пакета:

p7zip-rar - Модуль для p7zip, даёт возможность распаковывать RAR-архивы.

Использование

Менеджер архивов File Roller

С помощью менеджера архивов FileRoller можно просматривать 7z архивы, для этого достаточно дважды кликнуть на *.7z файле в Nautilus.

Для распаковки необходимо вызвать контекстное меню и выбрать пункт «Распаковать сюда» в Nautilus.

Для создания архивов:

Можно открыть Менеджер архивов и перетащить в его окно требующиеся файлы/директории: Менеджер архивов предложит создать новый архив. Во время сохранения будет вожможность выбрать формат архива, т.е. 7z.

Консольный порт 7-Zip

Пакет p7zip-full содержит утилиту /usr/bin/7z

Её можно использовать для создания 7-Zip архивов.

Создание архива

Для создания архива используется команда-параметр a

Для упаковки в архив arch.7z файлов file01.foo и file02.foo в директории /home/user/TheDir, выполните в терминале

Для упаковки в архив arch.7z всего содержимого директории /home/user/TheDir, выполните в терминале

Файл arch.7z будет создаваться в текущей директории.
Можно использовать абсолютный/относительный путь, например:

В случае архивирования директории не следует писать ./TheDir/*, поскольку файлы/директории вроде ./TheDir/.profile не попадут в архив.

Дополнительные опции архивирования

Опция -t определяет формат архива на выходе.
Например -t7z устанавливает 7z формат (он же используется по умолчанию).
Также можно определить иной формат архива: zip , gzip , bzip2 или tar .

Опция -mx определяет метод компрессии, и может быть например следующих значений:

Также можно разделять архив на тома с помощью опции -v (b - байты, k - килобайты, m - мегобайты, g - гигабайты):

Если вы решили создать несколько томов, не трогайте выходные файлы до тех пор пока вся операция не будет завершена. 7-Zip может изменить любые объемы (в том числе первого тома) в конце архивирования.

Если во время процедуры архивации вы решите, что она занимает слишком много времени, можно остановить выполнение утилиты нажав Сtrl+С в терминале. Однако не забудьте удалить частично сгенерированный выходной файл. Если просто его оставить, а затем попытаться создать архив заново (с другой опцией -m например), утилита 7z отругается на ошибку: «не поддерживается архив». Ошибка возникает, потому что 7z пытается добавить файлы в существующий архив, а последний оказывается «битым».

Для большей настройки процесса архивирования можно использовать опцию -m ( -mfb -md -ms ), например:

Если архив необходимо защитить, тогда наберите в терминале:

Здесь опция опция -pqwerty123 задаёт пароль «qwerty123», а опция -mhe=on разрешает криптование заголовков.

Во всем многообразии опций как всегда поможет разобраться

Распаковка архива

Для распаковки используется команда x

Для извлечения содержимого из архива arch.7z в текущую директорию, выполните в терминале:

Если архив разбит на множество частей, используйте имя с наименьшим номером тома:

Если вы хотите извлечь архив не в текущей диретории, вы можете явно задать целевую директорию с помощью опции -o

7-Zip является архиватором файлов с наивысшей степенью сжатия, с открытым исходным кодом.

Первоначально она была разработана для Windows. Портированная на Linux 7zip также часто используется для извлечения DEB, RPM и ISO файлов.

Кроме простого архивирования, 7zip может поддерживать шифрование AES-256, а также самораспаковывающиеся и многотомные архивы.

Программа поддерживает 7Z (реализующий алгоритм сжатия LZMA), LZMA2, XZ, ZIP, Zip64, CAB, RAR (если установлен несвободный пакет p7zip-rar), ARJ, GZIP, BZIP2, TAR, CPIO, RPM, ISO, большинство образов файловой системы и форматов DEB.

Степень сжатия в новом формате 7z на 30-50% лучше, чем в формате ZIP. 7Z использует плагины для обработки архивов.

Установка программы 7Z в Linux Ubuntu/Mint

В стандартных репозиториях Linux Ubuntu и Mint присутствуют три пакета, относящиеся к 7Z:

  • p7zip: включает 7zr (минимальный инструмент архивирования 7zip), который может работать только с родным форматом 7z.
  • p7zip-full: содержит 7z, который может поддерживать 7z, LZMA2, XZ, ZIP, CAB, GZIP, BZIP2, ARJ, TAR, CPIO, RPM, ISO и DEB.
  • p7zip-rar: содержит плагин для извлечения файлов RAR.

Рекомендуется установить пакет p7zip-full (а не p7zip), поскольку это наиболее полный пакет 7Z, который поддерживает много различных архивных форматов.

Если вы намереваетесь извлекать файлы RAR, вам также нужно установить пакет p7zip-rar. Поддержка вынесена в отдельный пакет плагина потому, что RAR — это проприетарный формат.

Синтаксис программы 7z

Основные команды программы 7Z

Основные ключи команды 7Z

Посмотреть все команды 7Z можно командой:

Чтобы посмотреть полную документацию(Англ.):

Примеры основного использования программы 7Z

Создание архива

Для упаковки в архив archive.7z файлов file01.c и file02.c в директории /home/user_name/

Для упаковки в архив archive.7z всего содержимого директории /home/user_name/

Файл archive.7z будет создаваться в текущей директории /home/user_name/.

Чтобы выбрать формат архива, нужно использовать опцию (ключ) -t (format name), которая позволит вам выбрать формат архива, такой как zip, gzip, bzip2 или tar

Создать архив с максимальной степенью сжатия

Создать архив всех файлов за исключением файла file01.c

Установить пароль на файл архива, например password

Посмотреть содержимое архива

Распаковка архива

Для распаковки архивов используются команды a и x

Для извлечения содержимого из архива arch.7z в текущую директорию, выполните в терминале:

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

Если архив разбит на множество частей, используйте имя с наименьшим номером тома:

Если вы хотите извлечь архив не в текущей диретории, вы можете явно задать целевую директорию с помощью опции -o

Команда b измеряет скорость процессора и проверяет оперативную память на наличие ошибок.

Тест показывает рейтинг в MIPS (миллион инструкций в секунду). Значение рейтинга рассчитывается по измеренной скорости процессора и нормализуется по результатам работы процессора Intel Core 2 с отключенной опцией многопоточности. Так что, если у вас Intel Core 2 Duo, номинальные значения должны быть близки к реальной частоте процессора.

Читайте также: