⌨️Команда tar

Работа с архиватором

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

tar -zcf [имя_файла] [путь_до_папки/файла]

z - архивирует с gzip компрессией. Если нужно использовать bzip2, надо заменить ключ "z" на "j";

c - без этого ключа архив не создастся;

f - вывод информация в файл. Без этого ключа tar будет выдавать результат на stdout при упаковке и пытаться читать архив с stdin при распаковке.

v - вывод подробной информации

tar \
  -cvzf ../var/www/html/site.ru/site-$(date +%Y%m%d).tar.gz \
  -C /var/www/html \
  site

Исключить папки и файлы при создании архива

tar -zcf /root/files.tar.gz /home/ --exclude={'/cache/','/trash/'}

Символы звёздочек в exclude означают любой набор символов. То есть выполнять эту команду без звёздочек в начале путей, то необходимо прописывать полный путь к папке, которую надо исключить. В конце значений exclude тоже стоят звёздочки, чтобы удалялись не сами папки, а их содержимое (все дочерние файлы и папки). При выполнении такой команды в архив не попадут файлы из папок: /home/cache/ /home/folder/cache/ /home/folder/subfolder/cache/

Обратите внимание на то, что внутри фигурных скобок explude нет пробелов {'/cache/','/trash/'}. Если поставить пробел до/после запятой или до/после фигурной скобки, то исключение не сработает

Разархивировать

tar -xf files.tar.gz

Если требуется распаковать архив в определённую папку, то путь к ней можно указать после ключа C:

tar -xf files.tar.gz -C /home/folder/

Перенос системы

sudo tar -cpv --one-file-system / | sudo tar -x -C /mnt
--one-file-system указывает работать в пределах одной файловой системы.
Если имеются примонтированные разделы (например /boot /home /var),
то необходимо проделать данную команду и в данных каталогах.

Бэкап системы в файл со сжатием

tar -czvf ubuntu22_04_wrk.tar.gz -C / --exclude={'./tmp/*','./proc/*','./sys/*','./run/*','./dev/*','./mnt/*','./snapshots/*','./boot/efi/*','./lost+found','./target'} .

Ключ "-С /" указывает сменить рабочую директорию на корень "/";

В ключе "--exclude={}" указываются шаблоны для исключения из архива, так как в конце в качестве начального каталога указывается ".", то tar воспринимает пути с этого символа. Если необходимо исключить содержимое папки то после названия используется "/*" при таком написании в архив попадает лишь пустая папка. Если же требуется исключить папку вообще, то шаблон должен оканчиваться ее именем, никакие символы после стоять не должны;

Желательно прописывать абсолютные пути, чтобы имя шаблона не совпало где-либо еще.

Last updated