Tar backup

Бэкап системы:

# tar -zcpf /backup/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=proc --exclude=sys --exclude=archive \
 --exclude=cache --exclude=*/lost+found --exclude=backup .

Распаковка архива в те же директории с теми же правами(опция -p, –preserve-permissions):

# tar -xfp /etc/motion/backup_* --overwrite --same-owner -C /

Опция “–directory” она же “-C” говорит tar, что до начала резервного копирования надо перейти в следующий каталог (в нашем примере “/”). Опция “–exclude” говорит tar не создавать резервные копии заданных каталогов и файлов. Символ “.”, находящийся в конце командной строки говорит tar, что он должен копировать все в текущем каталоге.

ПРЕДУПРЕЖДЕНИЕ. Когда вы создаете резервную копию вашей системы, не включайте в нее псевдофайловую систему “/proc”! Файлы “/proc” не настояшие файлы, это просто файлоподобные ссылки к структуре ядра. Также не включайте каталоги “/mnt”, “/archive” и все “lost+found”.
Пример упаковки нужных директорий:

# tar cfz /etc/firewall/backup/backup_`date +%d-%m-%Y`.tar.gz \
/etc/firewall/custom.iptables.up.rules /etc/firewall/* --exclude=/etc/firewall/backup

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

Утилита tar позволяет создавать инкрементные архивы, т.е. содержащие в себе только те файлы, которые были изменены с момента полного или добавочного резервного копирования. При использовании такого режима архивирования выполняется команда tar с параметром –listed-incremental=ФАЙЛ ( -g ФАЙЛ ), где ФАЙЛ указывает на файл метаданных, в котором хранится информация о состоянии инкрементного архива. Если такого файла не существует, то при выполнении команды создается полный архив, а также новый файл метаданных, который будет использоваться в последующих этапах создания инкрементных резервных копий.

# tar -zcvf /backup/home.tar.gz --backup=numbered --listed-incremental=/backup/home_meta /home/
- создать инкрементный архив каталога /home. Параметр --backup=numbered указывает на то, что нужно создавать нумерованные резервные копии. Полный архив, в данном примере, будет создан в виде файла с именем home.tar.gz, а последующие инкрементные архивы будут создаваться с именами home.tar.gz.~1~, home.tar.gz.~2~ и т.д. Для восстановления данных из инкрементного архива нужно сначала разархивировать полный архивный файл, а затем – инкрементные:
# tar -zxvf /backup/home.tar.gz -C /home2 - извлечь в каталог /home2 содержимое полного архива.
# tar -zxvf /backup/home.tar.gz.~1~ -C /home2 - извлечь в каталог /home2 содержимое первого инкрементного архива.
# tar -zxvf /backup/home.tar.gz.~2~ -C /home2 - извлечь в каталог /home2 содержимое второго инкрементного архива.

Использование инкрементного архивирования в tar позволяет, например, создавать автоматически с помощью планировщика периодические резервные копии ( ежедневно, еженедельно, ежемесячно и т.п. )

Примеры использования tar

Создать архив всех файлов домашнего каталога пользователя user с использованием сжатия данных с помощью bzip2:

# tar -jcvf /backup/archive.tar.bz2 /home/user/ 

tar -acvf /backup/archive.tar.bz2 /home/user/ – создать архив всех файлов домашнего каталога пользователя user с использованием сжатия данных с помощью программы, определяемой автоматически по имени файла. В данном примере имя архива имеет расширение .bz2 и будет использована программа сжатия bzip2 . Если бы в имени архива имелось расширение .gz, то использовалась бы программа сжатия данных gzip. Если по имени файла архива невозможно определить программу сжатия, то архив создается, но сжатие не выполняется. При распаковке архива параметр -a указывать не обязательно, поскольку тип сжатия определяется автоматически в любом случае.

tar -tvf archive.tar – отобразить список файлов и каталогов архива archive.tar

tar -tvf archive.tar > listfiles – то же, что и в предыдущем примере, но с выдачей результатов в текстовый файл listfiles

tar –xvf archive.tar – распаковать (разархивировать) в текущий каталог содержимое архива archive.tar

tar –xvf /backup/archive.tar –C /home2/ – извлечь содержимое архива /backup/archive.tar в каталог /home2.

tar –xv –keep-newer-file –f /backup/archive.tar –C /home2 – то же, что и в предыдущем примере, только перезапись существующих файлов не будет выполнена, если они того же возраста или более новые.

tar –xvkf /backup/archive.tar –C /home2 – если при извлечении данных из архива, будет попытка перезаписи существующего файла, то программа tar завершится ошибкой.

tar –exclude=*log* -zcvf /backup/archive.tar.gz /var/ – при архивировании исключить файлы журналов.

tar –exclude-backups –exclude-caches –exclude-tag-all=excludes.txt -zcvf /backup/home.tar.gz /home/ – при архивировании исключить файлы бэкапов, кэш и все каталоги, в которых присутствует файл с именем excludes.txt