Работа с архивами в OSx в командной строке

Упаковка и распаковка архивов различных форматов

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

Терминал по умолчанию поддерживает следующие популярные форматы: zipgzip, bzip, tar и 7z.

Если не вдаваться в тонкости, то можно моментально выдать читателям две команды: compress и uncompress. Первая упаковывает, а вторая распаковывает файлы, вот только на выходе мы получает стандартный Unix-овский формат сжатия Lempel Ziv и суффикс Z там, где привыкли видеть более обыденные расширения. Поэтому разумнее использовать описанные выше архиваторы (файл «index.txt» был выбран в качестве примера и может быть заменён на что угодно).

Zip

Zip — пожалуй, самый распространённый формат, поэтому рассмотрим его первым. Zip, кстати, единственный, кто не удаляет оригинальные файлы/архивы и работает с несколькими файлами.

Для упаковки одного файла:

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

zip index.zip index.txt

Для упаковки нескольких файлов:

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

zip index.zip index1.txt index2.txt index3.txt

Распаковка:

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

unzip index.zip

GNU Zip

Упаковка GNU Zip (оригинальный файл удаляется, создаётся архив с суффикcом .gz):

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

gzip index.txt

Распаковка (здесь удаляется уже распакованный архив):

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

gunzip index.gz

BZip

Упаковка BZip аналогична (оригинальный файл удаляется, создаётся архив с суффикcом .bz2):

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

bzip2 index.txt

Распаковка BZip (здесь удаляется уже распакованный архив):

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

bunzip2 index.bz2

Tar

Остался tar. Tar предназначен для архивации не только файлов, но и целых директорий, чтобы потом, например, сохранить их в качестве бэкапа или отправить по почте. Этот метод благополучно работает с GNU Zip, BZip и Zip. Родное расширение .TAR обычно не используется и в ход идёт тройка тех самых архиваторов. Команда для упаковки (GNU Zip):

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

tar -czvf Hello.tar.gz /Users/Wandarnem/Desktop/ololo

После нажатия «Enter» папка, находящаяся по адресу «/Users/Wandarnem/Desktop/ololo» сожмётся в архив «Hello.tar.gz». «-czvf» — дежурная комбинация, служащая для вывода дополнительных атрибутов команды. Она будет меняться в зависимости от типа выбранного архиватора:

  • GNU Zip — «-czvf«
  • BZip — «-cjvf«
  • Zip — «-cZvf«

Само собой, суффикс «.gz» сменится на «.bz2» и «.Z» соответственно.

Для распаковки воспользуйтесь соответствующими командами (для GNU Zip, BZip и Zip соответственно):

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

tar -xzvf Hello.tar.gz

tar -xfvf Hello.tar.bz2

tar -xZvf Hello.tar.Z

А ещё возьмите на заметку полезнейшую фишку tar’а по упаковке файлов определённого формата в конкретной директории. Например, если вам нужно сжать только изображения расширения .JPG, введите следующее:

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

tar -czvf Images.tar.gz /Users/Wandarnem/Desktop/ololo/*.jpg

Выборки для других форматов делаются аналогичным образом. Имя архива «Images.tar.gz», как вы уже догадались, ставится произвольно.

7z

7z — изначально системой не поддерживается. Для его использования требуется предустановки данного архиватора.

Устанавливаем его:

brew install p7zip

Для упаковки одного файла:

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

7za a -t7z index.7z index.txt

Для упаковки нескольких файлов:

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

7za a -t7z index.7z *.txt

Распаковка:

<blockquote "="" "";="" color:="" rgb(85,="" 85,="" 85);="" line-height:="" 1.3;="" position:="" relative;="" width:="" 678.375px;"="" style="box-sizing: inherit; padding: 0.9375rem 1.25rem; margin: 0px auto 2rem; font-size: 1.5rem; border-width: 0px 0px 0px 6px; border-left-color: rgb(255, 116, 0); border-top-style: initial; border-right-style: initial; border-bottom-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: initial; border-image: initial; font-family: Golos, sans-serif; outline: 0px; vertical-align: baseline;">

7za x index.7z

Метаданные статьи

Идентификатор статьи:
19
Категория:
Рейтинг :