Секреты Терминала. Часть 20: Упаковка и распаковка архивов различных форматов
Вот мы и дошли уже до 20-той темы фирменного цикла «Секреты Терминала«. Этот материал мы хотели бы посвятить созданию архивов популярных и не очень форматов, а также извлечению из них файлов. Давайте сразу к делу.
Терминал по умолчанию поддерживает следующие популярные форматы: zip, gzip, bzip и tar.
Если не вдаваться в тонкости, то можно моментально выдать читателям две команды: compress и uncompress. Первая упаковывает, а вторая распаковывает файлы, вот только на выходе мы получает стандартный Unix-овский формат сжатия Lempel Ziv и суффикс Z там, где привыкли видеть более обыденные расширения. Поэтому разумнее использовать описанные выше архиваторы (файл «index.txt» был выбран в качестве примера и может быть заменён на что угодно).
Zip
Zip — пожалуй, самый распространённый формат, поэтому рассмотрим его первым. Zip, кстати, единственный, кто не удаляет оригинальные файлы/архивы и работает с несколькими файлами.
Для упаковки одного файла:
zip index.zip index.txt
Для упаковки нескольких файлов:
zip index.zip index1.txt index2.txt index3.txt
Распаковка:
unzip index.zip
GNU Zip
Упаковка GNU Zip (оригинальный файл удаляется, создаётся архив с суффикcом .gz):
gzip index.txt
Распаковка (здесь удаляется уже распакованный архив):
gunzip index.gz
BZip
Упаковка BZip аналогична (оригинальный файл удаляется, создаётся архив с суффикcом .bz2):
bzip2 index.txt
Распаковка BZip (здесь удаляется уже распакованный архив):
bunzip2 index.bz2
Tar
Остался tar. Tar предназначен для архивации не только файлов, но и целых директорий, чтобы потом, например, сохранить их в качестве бэкапа или отправить по почте. Этот метод благополучно работает с GNU Zip, BZip и Zip. Родное расширение .TAR обычно не используется и в ход идёт тройка тех самых архиваторов. Команда для упаковки (GNU Zip):
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 соответственно):
tar -xzvf Hello.tar.gz
tar -xfvf Hello.tar.bz2
tar -xZvf Hello.tar.Z
А ещё возьмите на заметку полезнейшую фишку tar’а по упаковке файлов определённого формата в конкретной директории. Например, если вам нужно сжать только изображения расширения .JPG, введите следующее:
tar -czvf Images.tar.gz /Users/Wandarnem/Desktop/ololo/*.jpg
Выборки для других форматов делаются аналогичным образом. Имя архива «Images.tar.gz», как вы уже догадались, ставится произвольно.