Создание и распаковка архивов

/

Создать

Создание выполняется с ключом 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

Распаковка .gz файла:

tar -xvf archive.tar.gz 

* при возникновении ошибки This does not look like a tar archive, можно воспользоваться командой gzip -d archive.tar.gz.

bz2

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

gzip

tar -xvzf archive.tar.gzip

* ключ z отвечает за работу с gzip.

tgz

Распаковывается, как 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:

tar –exclude=’sess_*’ -czvf archive.tar.gz /wwwsite

* в данном примере мы создадим архив archive.tar.gz, в котором не будет файлов, начинающихся на sess_.

Также можно исключить несколько файлов или папок, добавляя несколько опций exclude:

tar –exclude=’/data/recycle’ –exclude=’*.tmp’ zcf /backup/samba/2021-08-29.tar.gz /data/

* в данном примере мы исключим папку 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.

ZIP

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:

zip -r archive.zip /home/dmosk

* создает архив каталога /home/dmosk в файл archive.zip.

Распаковка ZIP:

unzip archive.zip

Previous Story

ПОЛЕЗНЫЕ КОМАНДЫ ДЛЯ ТЕРМИНАЛЬНОГО СЕРВЕРА

Next Story

How to install eDEX-UI Terminal

Latest from Blog

Zabbix – Docker – Raspberry Pi

Для начала установим Portainer – веб-интерфейс для управления docker-контейнерами. Бесплатно, удобно, подойдет новичкам в docker. Установка

Сетевая папка/диск в Linux

x.x.x.x адрес шары /mnt/shara точка монтирования user пользователь с доступом к шаре 1234 пароль пользователя Для

Памятка SSH

В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые

0 £0.00