2023-02-25
735

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

tar — утилита для архивации.

Особенности

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

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

По умолчанию при извлечении применяется маска и с файлов снимается разрешение на выполнение, для сохранения разрешений используется ключ p.

    Методы сжатия:
  • gzip - самый быстрый и самый старый, используется чаще всего, архив имеет расширение tar.gz или tgz. Для использования этого метода добавляется ключ z;
  • bzip - средняя степень сжатия, архив имеет расширение tar.bz2. Для использования этого метода добавляется ключ j;
  • xz - самое сильное сжатие, архив имеет расширение tar.xz. Для использования этого метода добавляется ключ J;

Опции

    tar имеет следующие опции:
  • c создание архива
  • t отображение содержимого архива
  • x извлечение файлов из архива
  • f <file-name> указание имени файла архива
  • v детализация вывода, подробная информация о ходе работы

Примеры

  • tar -cf /root/etc.tar /etc создание архива, если есть архив с таким же имеем он будет перезаписан. После ключей указывается имя архива и каталог. При этом создается архив без сжатия. При создании архива tar удаляет символ корня со всех путей, это позволяет распаковать архив в любой каталог
  • tar -tf etc.tar отображение содержимого архива
  • tar -tvf etc.tar расширенный вариант отображения содержимого архива
  • tar -xf files.tar извлечение файлов в текущий каталог
  • tar -xf files.tar -C /home/user извлечение файлов в указанный каталог с полным путем
  • tar -xf files.tar -C /home/user --strip-components=3 извлечение файлов в указанный каталог удалением части путей, таким образом можно извлечь файлы в корень указанного каталога
  • tar -xzf files.tar.gz для разархивирования можно не указывать ключ алгоритма
  • tar -xf /home/user.tar -C /home/user/file /home/user извлечение одного из файлов архива в казанный каталог
  • tar -uf /home/user.tar /home/user/file добавление файла в архив
    Сжатие
  • tar -czf /tmp/gzip.tar.gz /home/user сжатие gzip
  • tar -czf /tmp/$(hostname)_$(date +'%d.%m.%Y_%H').tar.gz /home/userархивирование с записью переменных в имя

Инкрементальное архивирование

Для инкрементального бэкапа нужно указать ключ -g который задает файл для метаданных, если указанный файл еще не существует - создается полный архив и создается файл, если существует - из него считываются метаданные и создается инкрементальный архив
tar -czf /tmp/gzip.tar.gz -g meta.snar /home/user
если создать еще один аналогичный архив с другим названием, то в нем будут только измененные файлы
tar -czf /tmp/gzip2.tar.gz -g meta.snar /home/user
Для извлечения и просмотра можно не указывать файл snar, так как в самом архиве есть эта информация, можно указать так
tar -tf /tmp/gzip2.tar.gz -g /dev/null
Для восстановления нужно поочередно восстанавливать архивы до требуемого дня, сначала нужно восстановить исходный архив
tar -xf /tmp/gzip.tar.gz -g /dev/null
затем второй
tar -xf /tmp/gzip2.tar.gz -g /dev/null