Утилита tar (от англ. Tape ARchive, ленточный архив) — это один из важнейших и наиболее часто используемых инструментов в арсенале системного администратора Linux. Команда tar создает файлы tar путем преобразования группы файлов или целых директорий в единый архивный файл. Изначально утилита создавалась для записи данных на магнитные ленты‚ но сегодня она является стандартом де-факто для упаковки и распространения файлов в UNIX-подобных системах.
В этой статье мы подробно разберем‚ как сделать tar архив‚ какие ключи используются для сжатия‚ и как передавать архивы напрямую по сети.
Основы синтаксиса команды tar
Синтаксис команды выглядит следующим образом:
tar -ключи название_архива путь_что_запаковать
Утилита tar обладает огромным количеством функций‚ но для повседневной работы достаточно запомнить несколько базовых параметров:
- -c‚ —create, создает новый архив и записывает в него файлы.
- -f — использовать файл (обязательно указываем‚ так как в большей степени работаем именно с файлами‚ а не с потоками или устройствами);
- -v — verbose режим‚ то есть с выводом на экран процесса (очень удобно для наблюдения за ходом работы‚ но в скриптах можно упустить).
- -x — извлечь файлы из архива (распаковка).
- -t — отобразить список файлов‚ включенных в архив‚ без их распаковки.
- -u — добавить уже существующий архив к другому.
Создание простейшего архива (без сжатия)
Параметр cf отвечает за создание архива filename.tar‚ в который войдут указанные файлы. Вместо файлов могут быть указаны и директории. Так и создается простейший архив без сжатия (так называемый «тарбол»).
tar -cvf file.tar /full/path — создать .tar
В этом примере директория /full/path будет упакована в файл file.tar.
Сжатие архивов: gzip и bzip2
Поскольку сам по себе tar не сжимает данные‚ а лишь объединяет файлы в один‚ для уменьшения размера архива используются дополнительные компрессоры. Для использования каждого из них применяется отдельный набор параметров.
Сжатие gzip (.tar.gz)
Для использования сжатия не нужно запускать что-либо еще‚ достаточно указать tar‚ каким архиватором следует сжать архив. Ключ -z сжимает архив в gzip. Для начала файлы архивируются с помощью tar‚ затем компрессируются через gzip. В результате файл на выходе будет иметь двойное расширение tar.gz (или просто tgz).
tar -czvf file.tar.gz /full/path, создать .tar.gz (архив)
Пример из реальной практики: в данном примере будет создан архив archive.tar.gz домашней директории пользователя (/home/dmosk):
tar -czvf archive.tar.gz /home/dmosk
Сжатие bzip2 (.tar.bz2)
Метод bzip2 обеспечивает лучшую степень сжатия‚ чем gzip‚ но требует больше процессорного времени. Для его использования применяется ключ -j.
tar -cjvf file.tar.bz2 /full/path — создать .tar.bz2
Распаковка TAR-архивов
Для извлечения файлов из созданного архива используется параметр -xvf. Если архив сжат‚ необходимо также указать соответствующий ключ сжатия (z для gzip‚ j для bzip2).
tar параметр -xvf название_архива параметр -C /путь_к_папке
Ключ -C позволяет указать директорию‚ в которую будут распакованы файлы. Если вы хотите получить информацию о всех возможностях TAR‚ воспользуйтесь командой man tar в терминале.
Продвинутые приемы: передача архива по сети
Одной из мощнейших возможностей tar является способность передавать поток данных напрямую в другую программу‚ например‚ через SSH. Это позволяет создавать архив на одном сервере и сразу же сохранять его на удаленном сервере‚ не занимая место на локальном диске.
Альтернативный вариант прямой передачи:
tar -cz /foo/bar | ssh somehost.foo.com «cat > backup.tar.gz»
Утилита tar является фундаментальным инструментом для администрирования систем Linux (Ubuntu‚ Debian‚ CentOS и др.). Понимание того‚ как работает архивация и какие ключи отвечают за сжатие‚ позволит вам эффективно управлять бэкапами и переносить данные. В этой статье мы рассмотрели базовые команды‚ однако tar обладает еще большим функционалом‚ который вы можете изучить самостоятельно.