Как сделать файл gz
В большинстве случае архивы позволяют эффективно сжать данные, экономя место файловой системы, а также служат удобным способом хранения информации. С архивами можно взаимодействовать как через графический интерфейс, так и через консоль. Ниже будет рассмотрен именно второй вариант, работа на сервере, подключенного через SSH, проводится через командную строку, далее будут приведены консольные инструменты для архивирования.
Распространённые форматы архивов
- TAR (.tar) – популярный формат архивирования файлов на Unix-системах и одноименная программа для работы с взаимосвязанными форматами архивов. Для сжатия использует внешние утилиты — gzip, bzip2, lzip и другие. В архив, при создании, может записываться дополнительная информация. Например, о владельце и структуре каталогов.
- GZ (.tar.gz / .tgz / .tar.gzip) – формат архива, выполняющий сжатие данных с помощью утилиты tar (для одного файла) и связки утилит gzip + tar (для нескольких файлов). Отличительная особенность — умение работать с непрерывным потоком данных. Поэтому GZ считается оптимальным инструментом для сжатия интернет-трафика.
- BZIP2 (.tar.bz2 / .tar.bzip2 / .tbz2 / .tb2 / .tbz) – бесплатная утилита для компрессии данных с высоким качеством. В основном применяется на Unix платформах. По сравнению с GZ, работает медленнее и с большой нагрузкой на CPU, но эффективность сжатия выше.
- ZIP (.zip) – распространённый тип архивов на Windows системах, позволяющий сжимать файлы и каталоги с использованием разных алгоритмов. Данный формат поддерживается почти всеми ОС, включая Windows, Mac OS X и Unix/Lin. Есть возможность создания самораспаковывающегося архива в виде исполняемого SFX-файла.
- RAR (.rar) – популярный инструмент работы с архивацией на ОС семейства Windows. Аналог формата Zip. Многоформатный архиватор распространяется в виде программы WinRAR с графическим интерфейсом. Важные особенности — возможность восстановить часть данных, создание многотомных архивов.
Работа с архивами TAR, GZ, BZIP2
Синтаксис команды
Чтобы заархивировать /разархивировать файлы в TAR, GZ, BZIP2, команда составляется по аналогичной схеме. Делается это следующим образом (на примере TAR):
Основные аргументы
- -c – создать архив.
- -f – вывести имя или путь до архива.
- -t – показать файлы в архиве (применяется при уже созданном архиве).
- -v – показать обрабатываемые файлы.
- -a – сжать или извлечь данные из архива с автоматическим выбором утилиты (gzip, bzip и т.д.), в зависимости от указанного расширения. Например, если файл называется «file.tar.gz», то к архиву автоматически будет применено сжатие с помощью gzip.
- -x – извлечь данные из архива.
Создание архива TAR
Извлечение данных из архива TAR
Пример извлечения данных в текущую директорию:
Пример извлечения данных в определённую директорию:
Создание архива GZ
Извлечение данных из архива GZ
Пример извлечения данных в текущую директорию:
Пример извлечения данных в определённую директорию:
Создание архива BZ2
Извлечение данных из архива BZ2
Пример извлечения данных в текущую директорию:
Пример извлечения данных в определённую директорию:
Работа с ZIP-файлами
Подготовка
Для работы с данным типом архивов будут использоваться программы ZIP и UNZIP. На некоторых дистрибутивах данные утилиты отсутствуют, поэтому перед работой нужно выполнить инсталляцию соответствующих пакетов.
CentOS
Debian/Ubuntu
Создание архива ZIP
Синтаксис
Извлечение данных из архива ZIP
Синтаксис
Если не указывать аргумент «-d», то файлы будут распакованы в директорию с архивом, указанным в команде.
Работа с RAR архивами
Подготовка
Для работы с RAR архивами потребуется программа UNRAR, отсутствующая по умолчанию на некоторых дистрибутивах. Для ее установки, в терминал вводятся следующие команды.
CentOS
Debian/Ubuntu
Создание архива RAR
Синтаксис
Чтобы заархивировать каталог полностью (со всеми вложенными папками и файлами), нужно добавить ключ «-r». Команда будет выглядеть так:
Наиболее распространенные программы для архивирования файлов и каталогов:
Архивирование файлов и папок с помощью tar
Краткий список команд
Создание tar архивов:
- Простой tar архив: tar -cf archive.tar file1 file2 file3
- gzip tar архив: tar -czf archive.tgz file1 file2 file3
- bzip tar архив: tar -cjf archive.tbz file1 file2 file3
Извлечение tar архивов:
- Простой tar архив: tar -xf archive.tar
- gzip tar архив: tar -xzf archive.tgz
- bzip tar архив: tar -xjf archive.tbz
Создание нового архива
Для целей данной статьи я буду использовать папку с именем mordeniuss, которая содержит файлы трех разных типов.
Теперь давайте создадим новый tar-архив каталога mordeniuss.
Аналогично, чтобы создать архив из набора файлов в текущем рабочем каталоге, используйте эту команду:
Извлечение архива
Чтобы извлечь архив в текущем каталоге, просто выполните:
Мы также можем извлечь архив в другой каталог, используя флаг -C. Например, следующая команда извлекает данный архивный файл в каталог загрузок.
Или перейдите в папку Downloads и распакуйте архив внутри нее, как показано ниже.
Также вы можете извлечь файлы только определенного типа. Например, следующая команда извлекает файлы типа «.jpg».
Создание архива в формате GZIP и BZIP
Во-первых, давайте создадим сжатый архив:
Здесь мы используем флаг z для сжатия архива методом сжатия gzip.
Вы можете использовать флаг v для просмотра прогресса при создании архива.
Чтобы создать сжатый архив из списка файлов:
Чтобы распаковать архив в текущем каталоге, используйте:
Чтобы извлечь архив в другую папку, используйте флаг -C
Давайте создадим архив bzip. Для этого используйте флаг j, как показано ниже.
Создание архива из списка файлов:
Распакуем архив в текущем каталоге. Для этого используем:
Для извлечения в другой каталог:
Создание архива из нескольких каталогов или файлов одновременно
Это еще одна крутая особенность команды tar. Чтобы создать сжатый архив из нескольких каталогов или файлов одновременно, используйте эту команду:
Приведенная выше команда создаст архив из папок Downloads, Documents и файла file.odt в каталоге mordeniuss и сохранит архив в текущем рабочем каталоге.
Исключить каталоги или файлы при создании архива
Это очень полезно при резервном копировании ваших данных. Вы можете исключить несущественные файлы или каталоги из вашей копии. Тут потребуется ключ -exclude. Например, вы хотите создать архив вашей домашней директории, но исключить загрузки, документы, изображения, музыку.
Выглядит это так:
Приведенная выше команда создаст сжатый архив моего каталога $HOME, исключая папки Downloads, Documents, Pictures и Music. Чтобы создать архив bzip, замените z на j и используйте расширение .tbz в примере.
Список содержимого архива без извлечения
Чтобы просмотреть содержимое, используйте флаг t.
Чтобы просмотреть подробный вывод, используйте флаг v.
Добавление файлов в существующий архив
Файлы или каталоги могут быть добавлены / обновлены в существующие архивы с помощью флага r. Посмотрите на следующую команду.
Все мы пользуемся архивами, например zip, tar и так далее, но, есть понятие архивация и сжатие. Это совершенно два разных действия, архивацией называют например создание архивной копии вашей системы. А сжатие обозначает уменьшение размера файла или целой папки. Архивировать можно не только вашу операционную систему, но так же и базы данных, конфигурационные файлы и многое другое. При этом, важно что бы изначальный размер архивируемого объекта так же сжимался, это например будет полезно для экономии места на жестком диске. Думаю с этим все понятно, теперь вы знаете что существует архивация и сжатие файлов. Часто архивация и сжатие файлов производится одновременно. Теперь давайте перейдем к практике, все действия будут совершаться в терминале, так как это универсальный метод позволяющий обойтись без установки дополнительного П.О.
Архивируем папки и файлы командой tar
Для архивирования используется команда tar, давайте немного разберемся с опциями этой команды:
- tar c – создания архива
- tar r – добавления в архив файлов или папок
- tar t – просмотр содержимого архива без его распаковки
- tar x – распаковка архива
- tar v расширенный режим, в котором отображается вся информация о процессе
Это лишь малая часть всех опций, которые доступны при выполнении команды tar, полный список можно вызвать командой:
Сжатие архива gzip bzip2
Для сжатия архива используется одна из команд, первая это классическая “gzip”, а вторая bzip2. Команда bzip2 лучше сжимает архивы, но, требуется больше времени для сжатия архива. Существенную разницу вы увидите между данными командами лишь при сжатии объемных файлов, а при сжатии файлов малого размера, разница практически не заметна. Для вызова справки по данным командами необходимо выполнить команды:
gzip --help
bzip2 --help
Архивируем папки и файлы на практике
Теперь давайте перейдем к практике, предположим нам необходимо создать архив папки “test”, для этого необходимо выполнить команду tar с опцией “c”, как вы уже знаете, это опция создает архивы. Далее, дополним данную команду опцией “v”, что бы мы могли видеть процесс создания архива, и последняя опция “f”, это имя создаваемого файла. И так, вводим команду: “tar cvf archive .tar”, в данном примере слово “ archive ” означает название создаваемого вами архива, оно может быть любым. После чего указываем папки и файлы, которые нам необходимо заархивировать, в данном примере это будет папка “test”:
tar cvf archive.tar test
Таким образом вы можете архивировать сразу несколько директорий и файлов в один архив, для этого необходимо после выполнения команды “tar cvf archive.tar” просто перечислять их имена. Теперь давайте добавим в уже созданный чуть ранее архив файл “test_file”. Для этого служит опция “r”, то есть, теперь вместо опции “c” указываем “r”, остальные опции можно оставить без изменений:
tar rvf archive.tar test_file
После чего воспользуемся опцией “t” для просмотра содержимого архива. В директории “test” так же лежит файл, который называется точно так же, как и директория – “test”. Это отчетливо видно на скриншоте (test/ test ), и последняя строчка (test_file), это файл, который мы добавляли в уже созданный архив:
tar tvf archive.tar
Распаковка архива
Мы научились создавать архивы, но, их так же необходимо и распаковывать, для этого служит опция “x”. Предположим, нам необходимо распаковать только один файл “test_file”. Для этого необходимо ввести команду “tar” далее указать необходимые опции “xvf”, далее указываем название архива, а после чего название файла, в нашем же случае это “test_file”. для наглядности я перенес данный архив в папку “dir_archive”, так что не удивляйтесь:
tar xvf archive.tar test_file
Для распаковки всего архива выполняем команду “tar”, далее уже знакомые опции “xvf” и название архива, в нашем же случае это “archive.tar”:
tar xvf archive.tar
Если же вам необходимо распаковать архив в какую либо иную директорию, то для этого служит опция “-C”, далее указываем путь к нужной нам директории. Например, возьмем директорию “Документы”, вводим команду для распаковки архива “tar xvf archive.tar” далее указываем опцию “-C” и указываем путь к директории “Документы”:
tar xvf archive.tar -C
Архивация и сжатие файлов и папок
Теперь переходим к сжатию архива, и начнем пожалуй с “gzip”. Для того что бы сжать архив, необходимо ввести команду “tar”, далее указать опции “zcvf”, если присмотритесь, то увидите, что к уже знакомым нам опциям просто добавляем “z”. После чего указываем имя архива, например “ gzip_arch “, указываем расширения “tar.gz” и последним шагом указываем файлы и папки которые мы хотим заархивировать. Например, возьмем папку “test” и файл “test_file” и создадим сжатый архив под названием “gzip_arch”. Вводим команду:
tar zcvf gzip_arch .tar.gz test test_file
Для сжатия в “bzip2” необходимо выполнить команду “tar”, затем указываем опции “ j cvf”, обратите внимания, что в данном случае первой буквой идет “j”, далее указываем имя создаваемого архива и после чего указываем расширения. Для создания “bzip2” архива необходимо указать расширения “tar.bz2”. Теперь давайте создадим архив с тем же названием (gzip_arch) но при помощи bzip2:
tar jcvf gzip_arch .tar.bz2 test test_file
Для того что бы посмотреть содержимое архива “tar.gz” необходимо ввести команду “tar” далее указать опцию “ztvf” и название архива. Собственно, разница составляет лишь в одной букве – “z”, а для просмотра архива “tar.bz2” необходимо ввести все ту же команду “tar” с опцией “jtvf” и название архива. Как и в прошлый раз, разница все го в одной букве – “j”.
Распаковка архивов
Переходим к распаковке созданных чуть ранее архивов, я их переместил в директорию “dir_archive”. Для распаковки архивов “tar.gz” используются опция “z”, а опция “x” означает распаковать данный архив. Далее указываем опции “vf” и название архива, в данном случае это “gzip_arch.tar.gz”: То есть, полная команда будет выглядеть так “tar zxvf gzip_arch.tar.gz”, так же, можно распаковать только определенный файл или папку, для этого просто указываете название папки или файла. Например, распакуем все тот же файл “test_file”:
tar zxvf gzip_arch.tar.gz test_file
Для распаковки архивов “tar.bz2” используются все те же опции но лишь заменив первую букву на “j”, далее все точно так же, указываете название архива, а в нашем случае это “gzip_arch.tar.bz2” и при необходимости файл. Если же вы хотите распаковать весь архив, то достаточно указать в обеих случаях только название самого архива. То есть, давайте распакуем архив “gzip_arch.tar.bz2”, по аналогии точно так же, только изменив опции распаковывается и “gzip_arch.tar.gz” весь целиком:
tar jxvf gzip_arch.tar.bz2
В том случае если вы хотите распаковать архив в другую директорию, то используйте уже знакомую вам опцию “-C”, как мы это делали ранее с архивами. Например, я хочу распаковать архив “gzip_arch.tar.bz2” в директорию “Загрузки”, ввожу команду для распаковки архива, затем указываю опцию “-C”, а затем путь до директории “Загрузки”:
Заключение
На первый взгляд вам может показаться что это все муторно и не понятно, да и зачем в наше время использовать терминал для подобных манипуляций? Но, на самом деле, работая в терминале вы можете сэкономить множество времени, так как создавая архив в терминале, вы можете в него упаковать только те файлы, которые вам необходимо. При этом, достаточно написать их названия, а используя графические версии архиваторов на это у вас может уйти немного больше времени. Да и как уже ранее говорилось, сила Linux в его терминале, и знания терминала порой очень вам может пригодится, так что не стоит его боятся.
А на этом сегодня все. Надеюсь данная статья будет вам полезна.
Журнал Cyber-X
Утилита командной строки tar используется для работы с архивами в операционных системах на базе UNIX. С ее помощью можно архивировать данные и оптимизировать использование дискового пространства.
Создание и распаковка архивов
Создать
Создание выполняется с ключом c. Синтаксис следующий:
tar -c<опции> <новый архивный файл> <что сжимаем>
tar -czvf archive.tar.gz /home/dmosk
* в данном примере будет создан архив archive.tar.gz домашней директории пользователя (/home/dmosk)
** где z — сжать архив в gzip (без этого параметра, tar не сжимает, а создает так называемый тарбол); c — ключ на создание архива; v — verbose режим, то есть с выводом на экран процесса (очень удобно для наблюдением за ходом работы, но в скриптах можно упустить); f — использовать файл (обязательно указываем, так как в большей степени работаем именно с файлами).
Распаковать
Распаковка выполняется с ключом x с синтаксисом:
tar -x<опции> <архивный файл>
tar -xvf archive.tar.gz
Примеры
Распаковка .gz файла:
tar -xvf archive.tar.gz
* при возникновении ошибки This does not look like a tar archive, можно воспользоваться командой gzip -d archive.tar.gz.
tar -xvjf archive.tar.bz2
* ключ j отвечает за работу с bz2.
Если система ругается на bzip2, значит нужно его установить:
yum install bzip2
apt-get install bzip2
pkg install bzip2
* соответственно, для CentOS (RPM based), Ubuntu (deb based), FreeBSD (BSD based).
Если видим ошибку tar: Unrecognized archive format, воспользуемся следующей командой:
bzip2 -d archive.tar.bz2
tar -xvzf archive.tar.gzip
* ключ z отвечает за работу с gzip.
Распаковывается, как gzip:
tar -xvzf archive.tgz
Распаковать в определенную папку
tar -C /home/user -xvf archive.tar.gz
* ключ -C используется для указания папки, куда необходимо распаковать файлы из архива.
Распаковка без вложенной папки
Такой способ можно использовать для распаковки в заранее подготовленный каталог. Будет некий эффект переименовывания каталога или аналог «Распаковать здесь»:
tar -C /home/admin/mytar -xvf admin.tar.gz --strip-components 1
* каталог /home/admin/mytar заранее должен быть создан; --strip-components 1 пропустит одну вложенную папку внутри архива.
Исключение файлов по маске
Если необходимо пропустить некоторые файлы, вводим команду с ключом --exclude:
* в данном примере мы создадим архив archive.tar.gz, в котором не будет файлов, начинающихся на sess_.
Также можно исключить несколько файлов или папок, добавляя несколько опций exclude:
* в данном примере мы исключим папку recycle и файлы, которые заканчиваются на .tmp
Работа с архивами, разбитыми на части
Разбить архив на части может понадобиться по разным причинам — нехватка места на носителе, необходимость отправки файлов по почте и так далее.
Чтобы создать архив, разбитый на части, вводим команду:
tar -zcvf - /root | split -b 100M - root_home.tar.gz
* данная команда создаст архив каталога /root и разобьет его на части по 100 Мб.
В итоге мы получим, примерно, такую картину:
root_home.tar.gzaa root_home.tar.gzac root_home.tar.gzae
root_home.tar.gzag root_home.tar.gzai root_home.tar.gzab
root_home.tar.gzad root_home.tar.gzaf root_home.tar.gzah
Чтобы собрать архив и восстановить его, вводим команду:
cat root_home.tar.gz* | tar -zxv
Описание ключей tar
Команды для действия
Ключ | Описание |
---|---|
-A | Добавление файлов в архив. |
-c | Создание нового архивного файла. |
-d | Показать отличающиеся данные между каталогом-исходником и содержимым архива. |
--delete | Удалить файлы внутри архива. |
-r | Добавить файлы в конец архива. |
-t | Показать содержимое архива. |
-u | Добавить файлы, которых нет в архиве. |
-x | Извлечь файлы из архива. |
* нельзя использовать несколько вышеперечисленных ключей в одной команде.
Дополнительные опции
Ключ | Описание |
---|---|
--atime-preserve | Оставить прежнюю метку времени доступа для файла. |
-b N | Задать размер блока N x 512. |
-C | Смена каталога. По умолчанию, используется тот, в котором мы находимся. |
--checkpoint | Показать имена папок при чтении архивного файла. |
-G | Использование старого формата инкрементального резервирования при отображении или извлечения. |
-g | Использование нового формата инкрементального резервирования при отображении или извлечения. |
-h | Не дублировать символьные ссылки. Только файлы, на которые указывают эти симлинки. |
-i | Игнорировать блоки нулей. |
-j | Использование bzip2. |
--ignore-failed-read | Игнорировать не читаемые файлы. |
-k | При распаковке, существующие файлы не заменяются соответствующими файлами из архива. |
-L N | Смена магнитной ленты после N*1024 байт. |
-m | При извлечении игнорировать время модификации объекта. |
-M | Многотомные архивы. |
-N DATE | Сохранять только более новые файлы относительно DATE |
-O | Направление извлекаемого на стандартный вывод. |
-p | Извлечение защищенной информации. |
-P | Не отбрасывает начальный слэш (/) из имен. |
-s | Сортировка файлов при извлечении. |
--preserve | Аналогично -ps |
--remove-files | Удалить исходные файлы после добавления в архив. |
--same-owner | Сохранить владельца при извлечении. |
--totals | Вывод байт при создании архива. |
-v | Протоколирование действий — отображение списка объектов, над которыми происходит действие. |
-V NAME | Создание архива на томе с меткой NAME. |
--version | Показать версию tar. |
-w | Требовать подтверждения для каждого действия. |
-W | Проверка архива после записи. |
--exclude FILE | Исключить файл FILE. |
-X FILE | Исключить файлы FILE. |
-Z | Фильтрует архив с помощью compress. |
-z | Использование gzip. |
* актуальный список опций можно получить командой man tar.
Tar не работает с zip-архивами. В системах UNIX для этого используем утилиты zip и unzip. Для начала, ставим нужные пакеты:
yum install zip unzip
apt-get install zip unzip
pkg install zip unzip
* соответственно, для RPM based, deb based, BSD based.
zip -r archive.zip /home/dmosk
* создает архив каталога /home/dmosk в файл archive.zip.
Windows
В системе на базе Windows встроенными средствами можно распаковать только ZIP-архивы. Для работы с разными архивами рекомендуется поставить архиватор, например 7-Zip.
Читайте также: