BackUp/SimpleBackup

Материал из ALT Linux Wiki
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Резервное копирование информации

Дмитрий Аленичев

Аннотация

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

Документ не является специфичным для ALT Linux. Полученные знания можно применять как к другим дистрибутивам Linux, так и к различным вариантам UNIX. Вы узнаете о возможностях регулярного резервного копирования, предоставляемых программами GNU tar и cron.


В наше время резервное копирование информации необходимо хотя бы по той причине, что ее потеря может сильно сказаться на времени, необходимом для восстановления испорченных или потерянных данных. Принятие простых мер поможет избежать необратимых последствий.

Хотя своевременное резервное копирование и не спасет вас от всех возможных проблем с испорченными данными, оно, по крайней мере, сделает возможным восстановление сохраненной информации.

Создание резервных копий

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

Для начала определитесь с тем, где вы будете хранить 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

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

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

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

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

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

-v

Выводить список обработанных файлов

-p

Сохранять информацию о правах доступа

--directory

Директория для сохранения в архив

--exclude

Исключить директорию при сохранении в архив

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

Замечание
Если вы решили использовать отдельный 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

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