Команда tar, её опции и ключи. Архивирование файлов в Linux Сжатие архивов в Linux

Нет ничего лучше для запоминания информации, чем чтение, а потом написание этой информации в тетрадь, вот и я люблю прочитать и записать информацию в свою тетрадь сайт

Сегодня речь пойдет о такой вещи как архивация, а именно упаковка и распаковка таких форматов как: tar, gzip, zip и rar в в операционных системах Unix и Linux

нашу статью разобьем на разделы, что бы была удобная навигация.

Архивация в Linux

Linux или Линукс сейчас самая популярная система не только для системный администраторов, но уже и для большинства рядовых граждан, а причина банальна — уход от Микрософта на государственном уровне и повсеместное внедрение «свободного ПО российской разработки», но как бы не называли ее мы все понимаем, что единственное свободное ПО которое может заменить для рядового пользователя операционную систему для работы в офисе это семейство Линуксовых. Поэтому как говорится уже можно начинать ее изучать всем повсеместно)))) но давайте не уходить от темы, а вернемся к нашим баранам!

Хоть Linux и имеет графическую оболочку и даже уже можно скачать графические пакеты для работы с самыми популярными расширениями архиваторов, мы будем рассматривать работу с архивами на уровне консоли (но если кому надо сделаем обзор пакетов для работы не через консоль)

Архивация Tar в Linux

Tar — или как мы его называли архиватором таковым не является, причина тому, логика работы данного инструмента! это всего лишь упаковщик, а если быть точнее то задача tar создать контейнер в формате tar в который она помещает выбранные вами файлы (без сжатия). Но если Вам нужно эти данные ужать или сжать для уменьшения размера архива, тогда применяются дополнительные инструменты такие как Gzip или bzip2 (вы должны были обращать внимания, что скачивая пакеты или файлы они имели странный формат name-file.tar.gz ) Все дело в том, что принцип работы инструмента по сжатию данных, работает только в однопотоковом режиме, поэтому, что бы заархивировать много файлов и их сжать нам необходимо было их упаковать в TAR (один файл), а только потом прогнать через сжатие Gzip или bzip2 поэтому эти инструменты работают как Бонни и Клайд)

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

Для начала начнем с запаковки архива Tar в Linux/ubuntu, и для этого надо запомнить шаблон или синтаксис команды:

tar [опции] <имя файла.tar>

  • c (create) — создать архив
  • f (file) — указать имя архива
  • дополнительно при помощи bzip2
  • дополнительно при помощи gzip

Для создания архива tar нам необходимы только две опции c и f, но если вы хотите видеть процесс упаковки файлов, то можете добавить ключ v и тогда вы увидите на экране бегущий список файлов (так сказать «аналог» виндовому прогрессу в виде процентов)

tar -cvf newfile.tar /foto

в данной команде мы указали создать архив newfile.tar и запаковать всю папку foto

В списке опций вы заметили два ключа j и z эти ключи используются как для сжатия в архив gzip или bzip2 если вам нужно сделать архивацию с сжатием то применяем следующую команду:

tar -cvjf newfile.tar /foto — создаст архив + сжатие newfile.tar.bz2
tar -cvzf newfile.tar /foto — создаст архив + сжатие newfile.tar.gz

Распаковать архив TAR

рассмотрим синтаксис команды что бы распаковать или разархивировать tar архив в linux/ubunta:

tar [опции] <имя файла.tar> [файлы или папки которые будем распаковывать]

Опции для создания архива tar:

  • x (extract) — извлечь файлы из архива
  • f (file) — указать имя архива
  • j (bzip2) — cжать/распаковать архив дополнительно при помощи bzip2
  • z (gzip) — сжать/распаковать архив дополнительно при помощи gzip
  • v (verbose) — выводит список прогресса
  • С (в верхнем регистре) — указываем альтернативное место для разархивирования файлов

tar -xvjf newfile.tar.bz2
tar -xvzf newfile.tar.gz -C /home/nibbl/desktop

Общая информация по работе с Tar

  1. tar —help — вызов справки по командам и параметрам
  2. man tar — вызов расширенной документации
  3. официальная документация по команде tar — ссылка

Архивация Zip в Linux

Архиватор zip — это звезда в мире ПО (ну не считая rar) этот формат очень популярен для windows систем и он по умолчанию уже встроен в чистую сборку операционной системы, поэтому только установив виндовус вы уже можете разархивировать файлы в формате zip

но давайте перейдем к делу, в Linux и Unix системах дела обстоят по другому, это формат Tar идет по умолчанию, а вот для zip надо поставить пакет unzip

Установка:

  1. sudo apt-get update && apt-get upgrade
  2. sudo apt-get install unzip

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

Для начала запомним шаблон или синтаксис команды для создания архива zip в linux:

zip [опции] <имя файла.zip> [файлы или папки которые будем упаковывать]

Опции для создания архива tar:

  • r (recurse) — рекурсивное создание архива
  • s (size) — разбивка архива на определенный размер k (kB), m (MB), g (GB) или t (TB)
    пример: zip -s 300m <файл 1 ГБ>
    на выходе получим:
    file.zip (300 mb, master file)
    file.001.zip (300 mb)
    file.002.zip (300 mb)
    file.003.zip (100 mb)
  • P (password) — запаролировать архив (можно использовать ключ e тогда пароль будете вводить в отдельной строке со звездочками)
    пример: zip -P мойпароль -r file.zip ./home/nibbl/foto
    пример2: zip -er file.zip ./home/nibbl/foto
  • x — исключаем файлы или каталоги из архива
  • 1-9 — степень сжатия (где 1 без сжатия, а 9 лучшее сжатие)

zip –r -9 -P 123 — archive.zip /home/nibbl/desktop/myfile

— данной командой мы заархивировали с сжатием папку myfile создали архив с именем archive.zip и установили пароль на архив 123

Распаковать zip архив

рассмотрим синтаксис команды что бы распаковать или разархивировать tar архив:

unzip <имя файла.zip>

Опции для создания архива tar:

  • d (directory) — указать директорию для разархивации
  • l — вывести список файлов в архиве
  • d — удалить определенный файл или каталог из уже сделанного архива
  • v — показывает детальную информацию по файлам в архиве ()

unzip <имя файла.zip> — распаковываем архив в категорию в которой находимся
unzip <имя файла.zip> -d /home/nibbl/desktop — распаковываем архив на рабочий стол

Общая информация по работе с Zip

  1. zip —help или unzip —help — вызов справки по командам и параметрам
  2. man zip или man unzip — вызов расширенной документации
  3. официальная документация по команде zip — ссылка

TAR (ленточный архив) команда-это, часто используемая команда в Linux, которая позволяет Вам хранить файлы в архиве. Часто встречаются файлы с расширением.tar.gz и.tar.bz2, в которых tar архив сжимается с помощью gzip или bzip алгоритмов соответственно.

Использование команды tar

Команда tar работает по умолчанию в большинстве Linux-систем и Вам не нужно устанавливать его отдельно. По умолчанию есть 2 формата сжатия gzip и bzip. Буква «z» указывает параметр gzip и «j» опция указывает на bzip. Также можно создать несжатый архив.

  1. Извлечение tar.gz архива

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

$ tar -xvzf tarfile.tar.gzp

Вот краткое объяснение используемых параметров —
х — извлечение файлов
v – выводить имена файлов как они извлекаются по одному
z — это «сжатый» файл
f — использовать следующий tar архив для эксплуатации

Извлечение tar.bz2/bzip архивов

Файлы с расширением bz2 сжимаются при помощи алгоритма bzip, и tar команда может справиться с ними. Используйте j опцию вместо z опции.

$ tar -xvjf archivefile.tar.bz2

  1. Извлечь файлы в определенный каталог или путь

Чтобы извлечь файлы в определенном каталоге, необходимо указать путь с помощью «- с» вариант. Обратите внимание, что C не является разделом.

$ tar -xvzf abc.tar.gz -C /opt/folder/

Однако сначала убедитесь, что папка назначения существует, так как tar не будет создавать директорию, если ее нет.

  1. Извлечение одного файла

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

$ tar -xz -f abc.tar.gz "./new/abc.txt"

Больше чем один файл может быть указан в предыдущей команде так

$ tar -xv -f abc.tar.gz "./new/cde.txt" "./new/abc.txt"

  1. Извлечение несколько файлов, используя подстановочные знаки

Подстановочные знаки можно использовать, чтобы извлечь кучу файлов, соответствующих заданному подстановочному знаку. Например, все файлы » txt» — расширения.

$ tar -xv -f abc.tar.gz --wildcards "*.txt"

  1. Список и поиск содержимого архива tar

Если вы хотите просто перечислить содержимое архива tar, а не извлекать их, можно использовать опцию “-t”. Следующая команда распечатывает содержимое tar архива.

$ tar -tz -f abc.tar.gz ./new/ ./new/cde.txt ./new/subdir/ ./new/subdir/in.txt ./new/abc.txt ...

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

Для tar.bz2/bzip файлов используйте «j» опцию.

$ tar -tvz -f abc.tar.gz | grep abc.txt -rw-rw-r-- enlightened/enlightened 0 2015-01-13 11:40 ./new/abc.txt

  1. Создать tar/tar.gz архив

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

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

$ tar -cvf abc.tar ./new/ ./new/ ./new/cde.txt ./new/abc.txt

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

Для сжатия используйте опцию «z» или «j» для gzip или bzip соответственно.

$ tar -cvzf abc.tar.gz ./new/

  1. Спрашивать подтверждение перед добавлением файлов

Полезная опция-это «w», которая заставляет tar запрашивать подтверждение для каждого файла перед добавлением их в архив. Это может быть иногда полезно.

Эти файлы будут добавлены в архив, если дается ответ «да». По умолчанию стандартным ответом будет «нет».

# Добавить конкретные файлы $ tar -czw -f abc.tar.gz ./new/* add ‘./new/abc.txt’?y add ‘./new/cde.txt’?y add ‘./new/newfile.txt’?n add ‘./new/subdir’?y add ‘./new/subdir/in.txt’?n # Теперь список файлов, добавленных $ tar -t -f abc.tar.gz ./new/abc.txt ./new/cde.txt ./new/subdir/

  1. Добавлять файлы в существующие архивы

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

$ tar -rv -f abc.tar abc.txt

Файлы не могут быть добавлены в сжатые архивы (gz или bzip). Файлы могут быть добавлены в обычный архив tar.

  1. Добавлять файлы в сжатые архивы (tar.gz/tar.bz2)

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

$ gunzip archive.tar.gz $ tar -rf archive.tar ./path/to/file $ gzip archive.tar

Для bzip файлов используйте bzip2 и bunzip2 команд соответственно.

  1. Резервное копирование с помощью tar

Реальный сценарий для резервного копирования каталогов через равные промежутки времени. Команда tar может планироваться на такие резервные копии с помощью cron. Вот пример —

$ tar -cvz -f archive-$(date +%Y%m%d).tar.gz ./new/

Выполните вышеуказанную команду через cron, и он будет продолжать создавать резервные копии файлов с именами как —

"archive-20150218.tar.gz".

  1. Проверка архивных файлов при создании

Параметр «W» может быть использован для проверки файлов после создания архива. Вот быстрый пример.

$ tar -cvW -f abc.tar ./new/ ./new/ ./new/cde.txt ./new/subdir/ ./new/subdir/in.txt ./new/newfile.txt ./new/abc.txt Verify ./new/ Verify ./new/cde.txt Verify ./new/subdir/ Verify ./new/subdir/in.txt Verify./new/newfile.txt Verify ./new/abc.txt

Обратите внимание, что проверка не может быть проведена в сжатых архивах. Он работает только с несжатыми tar архивами.

tar - наиболее распространенный архиватор, используемый в Linux-системах. Сам по себе tar не является архиватором в привычном понимании этого слова, т.к. он самостоятельно не использует сжатие. В то же время, многие архиваторы (например, Gzip или bzip2) не умеют сжимать несколько файлов, а работают только с одним файлом или входным потоком. Поэтому чаще всего эти программы используются вместе. tar создает несжатый архив, в который помещаются выбранные файлы и каталоги, при этом сохраняя некоторые их атрибуты (такие как права доступа). После этого полученный файл *.tar сжимается архиватором, например, gzip . Вот почему архивы обычно имеют расширение.tar.gz или.tar.bz2 (для архиваторов gzip и bzip2 соответственно)

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

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

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

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

Tar -cf txt.tar *.txt

Эта команда упакует все файлы с расширением txt в архив txt.tar. Так и создается простейший архив без сжатия. Для использования сжатия не нужно запускать что-либо еще, достаточно указать tar, каким архиватором следует сжать архив. Для двух самых популярных архиваторов gzip и bzip2 ключи будут -z и -j соответственно.

Tar -cvzf files.tar.gz ~/files

упакует папку ~/files со всем содержимым в сжатый с помощью gzip архив.

Tar -cvjf files.tar.bz2 ~/files

создаст аналогичный архив, используя для сжатия bzip2.

Ключ -v включает вывод списка упакованных файлов в процессе работы. К сожалению, более продвинутой индикации хода процесса (например, указания степени готовности в процентах) в tar не предусмотрено. Для этого используйте графические архиваторы (например, Xarchiver) или пользуйтесь средствами файл-менеджера.

Помимо gzip и bzip2 можно использовать, например, lzma (ключ –lzma) или xz (ключ -J), при этом соответствующий архиватор должен быть установлен в системе.

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

Действие «распаковка» задается с помощью ключа -x . И тут снова потребуется ключ -f для указания имени файла архива. Также добавим ключ -v для визуального отображения хода процесса.

Tar -xvf /path/to/archive.tar.bz2

распакует содержимое архива в текущую папку. Альтернативное место для распаковки можно указать с помощью ключа -C:

Tar -xvf archive.tar.bz2 -C /path/to/folder

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

Для просмотра содержимого архива используйте следующую команду:

Tar -tf archive.tar.gz

Она выведет простой список файлов и каталогов в архиве. Если же добавить ключ -v , будет выведен подробный список с указанием размера, прав доступа и прочих параметров (так же, как по ls -l)

Прочие возможности

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

man tar tar --help

Tar.gz - это архив созданный программой Tar, и после этого заархивированный программой Gzip. Такая двойная архивация обусловлена тем, что программа Gzip сжимает хорошо и быстро, но делает это только с одним файлом. Поэтому чтобы запаковать несколько файлов, для начала из них создается один tar-архив, а после этого он уже пакуется программой Gzip. Причем стоит отметить, что первичный архив tar практически не сжимает информацию, а лишь объединяет ее в один файл. В конечном варианте мы получаем архив с двойным расширением filename.tar.gz или filename.tgz

Как правильно создать tar.gz архив?

В ОС Windows

Нужно использовать архиватор7-zip .

В ОС Linux

Подключаемся к серверу на хостинге по SSH-протоколу с помощью программы PuTTY . В командную строку вводим:

Эта команда создаст архив file.tar из всех файлов в директории /full/path. Но т.к. tar не архивирует, а лишь объединяет файлы, то нам нужно еще раз запаковать его с помощью Gzip:

tar -czvf file.tar.gz /full/path

В итоге получим file.tar.gz который будет находится в директории /full/path.

Правила синтаксиса команды tar

tar [-ключи] [название архива, который будет создан] [что паковать\куда паковать]

Что касается ключей:
с (create) - создать файл архива

z (gzip) - архивировать файл с помощью gzip

Как правильно распаковать архив tar.gz?

В ОС Windows

В ОС Linux

На сервере хостинга - подключаемся к серверу по SSH-протоколу с помощью программы PuTTY . В командную строку вводим:

Синтаксис

tar [-ключи] [архив, который распаковываем или путь к нему]

x (eXtract) - распаковать файлы
v (verbose) - показать информацию о выполнении
f (file) - указывает что нужно создавать файл с именем, которое задается после ключей (в нашем примере file.tar или file.tar.gz), если не указать этот ключ, то будет использовано имя по умолчанию или возникнут проблемы.
file.tar.gz - имя архива, который нужно распаковать.