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