Резевное копирование с помощью tar

Количество информации, которую вы сможете восстановить, во многом зависит от того, как часто вы ее сохраняете и насколько надежно храните.

Для начала определитесь с тем, где вы будите хранить backup-копии. Наилучшим решением для домашнего компьютера является использование отдельного жесткого диска, но, к сожалению, не у всех есть такая возможность. Поэтому, скорее всего, вы будете сохранять копии в отдельной директории или на отдельном разделе жесткого диска и периодически переписывать их на CD-R(W) или DVD-R(W).

Вне зависимости от того, где физически будет располагаться директория для сохранения копий, далее будем предполагать, что это директория /backup.

В простейшем случае скрипт для сохранение backup-копии будет выглядеть следующим образом:

#!/bin/sh
tar -zcf /backup/home.tar.gz /home
tar -zcf /backup/etc.tar.gz /etc

В этом скрипте нет ничего особенного, но основные принципы он демонстрирует:

  • Сохранение и сжатие директории /home (домашние директории пользователей) в отдельный файл;
  • Сохранение и сжатие директории /etc (общие системные настройки) в отдельный файл.

Рассмотрим использованные опции команды tar:

-z
Сжать файл с использованием gzip
-c
Создать новый архив
-f
Использовать указанный файл

Следующий скрипт реализует более широкие возможности для сохранения backup-копии:

#!/bin/sh
tar -zcvpf /backup/backup-`date '+%F'`.tar.gz --directory / \
   --exclude=proc --exclude=var --exclude=mnt --exclude=usr --exclude=backup .

В данном примере сохраняются не отдельные директории, а корневая директория /, исключая /proc/var/mnt/usr и, конечно, /backup. Также к имени файла добавляется дата создания резервной копии.

Дополнительно к уже рассмотренным были задействованы следующие опции команды tar:

-v
Выводить список обработанных файлов
-p
Сохранять информацию о правах доступа
—directory
Директория для сохранения в архив
—exclude
Исключить директорию при сохранении в архив

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

Другой вариант исключить примонтированные файловые системы — использовать параметр  —one-file-system

Осторожно со сжатыми копиями!

В случае порчи хотя бы нескольких байт сжатого резервного архива исключается возможность восстановления файлов из этого архива, даже если восстанавливаемый файл не находится в поврежденной области. Поэтому, на такие носители как магнитная лента резервные копии предпочтительнее записывать в не сжатом виде. Для этого не нужно указывать опцию -z команды tar.

Внешние диски для архивирования резервных копий

Если вы решили использовать отдельный HDD для резервных копий, то вам подойдет следующее решение.

Для начала подключите предварительно отформатированный HDD. Далее подразумевается, что это /dev/hdb1, т. е. первый раздел на втором диске канала IDE1. Создайте точку монтирования:

cd /
mkdir backup

Дополните ваши скрипты для резервного копирования следующими строками:

#!/bin/sh
mount /dev/hdb1 /backup
#######################
# ваш скрипт          #
#######################
umount /backup

Со временем вы сами разработаете наиболее удобный и эффективный для вас способ проведения регулярного резервного копирования. Например, вы можете исключить директории (опция--exclude) с музыкой и фильмами из списка резервируемых директории.

Резервное копирование по расписанию

Далее вам предстоит настроить запуск скрипта по расписанию. На самом деле нет ничего проще. Со времен ОС UNIX существует программа cron, предназначенная для выполнения действий по расписанию. Пускай она и выполняет всю работу за вас. Откройте файл /etc/crontab и запишите новое правило:

#мин	час	число	месяц	день недели	команда
0	1	*	*	5		/usr/bin/full-backup

Это правило будет выполняться каждую пятницу в 1 час ночи. Для указания удобного для вас времени запишите нужные значения в соответствующих колонках. В примере предполагается, что командой резервного копирования является /usr/bin/full-backup. Замените эту команду на имя вашего скрипта.

Результат работы будет отправлен пользователю root по почте (при условии, что у вас настроен SMTP-сервер).

Восстановление из резервных копий

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

Перед извлечением файлов из резервной копии бывает необходимым просмотреть содержимое архива. Для этого укажите опцию -t команды tar. Например, следующая команда позволит просмотреть содержимое архива /backup/backup-07-March-2005.tar.gz:

tar -ztvpf /backup/backup-07-March-2005.tar.gz

Поиск нужных файлов в архиве

Не забывайте о конвейерах. Для поиска файла в архиве вы можете использовать программу GNU grep:

tar -ztvpf /backup/backup-07-March-2005.tar.gz | grep smb.conf

Для извлечения файлов из архива предназначена опция -x команды tar. Например, следующая команда восстановит все файлы из архива /backup/backup-12-March-2005.tar.gz:

tar -zxvpf /backup/backup-12-March-2005.tar.gz

Восстановление конкретных файлов

Для восстановления определенных файлов из архива укажите их имена после имени архива. Например, следующая команда восстановит файлы home/alenitchev/adt/backup.xml иetc/sendmail.cf из архива /backup/backup-17-March-2005.tar.gz:

tar -zxvpf /backup/backup-17-March-2005.tar.gz home/alenitchev/adt/backup.xml \
   etc/sendmail.cf

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

Пропуск файлов при восстановлении из tar архива

Если вы не хотите перезаписывать файлы, которые уже есть в системе, используйте параметр

-k, —keep-old-files

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

-K, —starting-file F

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *