Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Глава 8. Резервирование и восстановление

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

Часто ошибки происходят из-за неосторожности или ошибок пользователей. Если в системе есть много пользователей, они часто будут обращаться к Вам с просьбой помочь восстановить парочку файлов.

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

Самый безопасный метод выполнения резервных копий состоит в том, чтобы записать их на разные носители (лента, съемный диск, writeable CD...) и хранить где-нибудь подальше от Вашей Linux-системы. Иногда это не может быть практически выполнено: возможно, Вы не имеете несгораемого хранилища, в котором Вы можете хранить резервные ленты. Тем не менее, копии все же надо делать и хранить их получше.

Я выполняю резервное копирование на нескольких Linux-серверах. В зависимости от сервера, некоторые копии пишутся на ленты, другие на отдельный сервер за пределами сети, а третьи просто на отдельный раздел диска (файловая система ``/archive'') заданием для cron (возможно, из-за того, что сервер физически находится даоеко, и ежедневные визиты затруднены или невозможны).

Дома я не имею внешней резервной системы, и при этом я не имею большого количества доступного дискового пространства, чтобы писать копии на диск. Следовательно, я поддерживаю только мои файлы пользователя ``/home/'' также как некоторые файлы конфигурации в `` /etc/'' и записываю резервую копию в отдельный раздел диска.

Резервирование сервера

Имеется ряд методов выполнения копий с Linux. Они включают инструментальные средства командной строки, включенные в каждый дистрибутив Linux, например ``dd'', ``dump'', ``cpio'' и ``tar''. Также доступны утилиты, основанные на тексте, например ``Amanda'' и ``Taper'' разработанные, чтобы добавить более дружественный интерфейс к процедурам резервирования и восстановления. Имеются также GUI-утилиты, например ``KDat''. Также доступны коммерческие утилиты, например ``BRU'' и ``PerfectBackup+''. Любое из этих решений может обеспечивать защиту для ценных данных.

Краткий перечень некоторых из доступных инструментальных средств, включая то, где они могут быть получены, может быть найден на “Linux Applications and Utilities Page” по адресу http://www.xnet.com/blatura/linapp2.html#back. При выборе утилиты Вы должны рассмотреть следующие факторы:

  • Portability переносимость резервной копии. Например, резервирование в Solaris и восстановление в Red Hat Linux. Важно ли это Вам? Если да, вы вероятно выберете одно из инструментальных средств командной строки (``dd'', ``dump'', ``cpio'' или ``tar''), поскольку Вы можете быть приемлемо уверены что такое инструментальное средство будет доступно на любой *nix системе.

  • Unattended or automated backups Являются ли способность автоматизировать копирование так, чтобы оно могло выполняться равномерно без человеческого вмешательства, важным для Вас? Если да, Вы должны выбрать инструмент и резервную среду, которые будут поддерживать такую резервную схему.

  • User-friendliness Является ли дружественный интерфейс важным? Если да, Вы вероятно выберете инструмент, который обеспечивает текстовый или GUI интерфейс. Коммерческие утилиты могут обеспечивать самые простые интерфейсы, как и техническую поддержку.

  • Remote backups Является ли способность запустить копирование и восстановления с удаленной машины важной? Если да, вы, вероятно, выберете одно из инструментальных средств командной строки или текстоввую утилиту вместо GUI утилит (если Вы не имеете быстрого сетевого подключения для выполнения удаленного X сеанса).

  • Network backups Копирование и восстановление по сети Вам нужно? Если да, вероятно, стоит воспользоваться утилитой командной строки (например ``tar'') которая поддерживает сетевой доступ к устройствам резервирования или специальную утилиту (например, ``Amanda'') или какой-нибудь коммерческий пакет.

  • Media types Копии могут быть сохранены на разных носителях: ленте, жестком диске, ZIP диске или rewritable CD. Рассмотрите стоимость, надежность, емкость памяти и скорость передачи.

Caution

Предостережение: При резервировании файловых систем НЕ резервируйте псевдосистему `` /proc''! Файлы в /proc не настоящие, а только указатели на структуры данных ядра. Резервирование файлов типа ``/proc/kcore'', который является псевдофайлом, с содержанием всей памяти, является довольно большой и бессмысленной тратой ленты. Также не стоит резервировать файлы в ``/mnt'', поскольку там находятся файлы на CD-ROM, дискетах, сетевых дисках и других смонтированных внешних носителях.

Понятно, что конкретные действия по резервированию и восстановлению зависят от конкретного пакета. Здесь будут рассмотрены два средства, которыми я пользуюсьчаще всего: ``tar'' (“Tape ARchiver”), утилита командной строки, очень распространенная в *nix системах; и ``KDat'', GUI утилита поставляемая вместе с KDE (см. в разделе установка и настройка KDE главы 5 подробности о KDE).

Даже если утилита не имеет средств для автоматизации резервного копирования, процесс иногда удается автоматизировать, используя cron. Подробности в разделе Планирование процессов: Cron и файлы Crontab главы 9.

Резервирование программой ``tar'':

Если Вы используете для резервирования ``tar'', разберитесь с ее параметрами командной строки: наберите “man tar ”, там будет подробное описание. Еще потребуется знать, как обращаться к резервным носителям. В мире Unix все устройства доступны как файлы. Если запись идет на символьное устройство, имя “file” является именем устройства, например `` /dev/nst0'' для SCSI-стриммера).

Следующая команда скопирует Вашу Linux-систему в файловую систему ``/archive/'', исключив псевдофайловую систему ``/proc/ '', все смонтированные файловые системы в `` /mnt/'', саму систему `` /archive/'' и Squid cache, который незачем резервировать, да и занимает он немало места.


tar -zcvpf /archive/full-backup-`date '+%d-%B-%Y'`.tar.gz \
    --directory / --exclude=mnt --exclude=proc --exclude=var/spool/squid .

Не пугайтесь длинной команды! Разделите ее на компоненты и поймите ее красоту и простоту.

Здесь использованы опции: ``z'' (сжать резервную копию программой ``gzip''), ``c'' (создать архивный файл), ``v'' (отображать список файлов при архивации), ``p'' (сохранить в архиве права доступа к файлам: при восстановлении они будут тоже восстановлены). Опция ``f'' (file) указывает, что следующий параметр задает имя файла или устройства длязаписи. Обратите внимание на то, что имя архивабудет содержать дату его создания, поскольку в имя файла включена команда ``date''. Общее соглашение об именах состоит в том, чтобы к имени архива добавлять ``tar'', а к имени сжатого архива добавлять `` tar.gz''.

Опция ``--directory'' задает имя начального каталога, из которого надо брать данные для архивации (в данном случае ``/''). Опция ``--exclude'' указывает каталоги, которые не надо архивировать. Наконец, символ ``.'' указывает, что упаковать все надо с путями относительно текущего каталога.

Note

Обратите внимание: Опции для tar cAsE-sEnSiTiVe! То есть, чувствительны к регистру символов. К тому же, многие опции могут задаваться как один символ (например, ``f'') или как несколько (например, ``file''). Краткая форма предваряется одним символом ``-'', а полная двумя такими символами.

Другой пример: запись только определенных файловых систем (в противоположность записи всех, кроме некоторых, как было показано выше).


tar -cvpf /dev/nst0 --label="Backup set created on `date '+%d-%B-%Y'`." \
    --directory / --exclude=var/spool/ etc home usr/local var/spool

Здесь опция сжатия ``z'' не использована. Я строго рекомендую записывать именно несжатые данные на ленту потому, что при повреждении части ленты со сжатыми данными, Вы потеряете весь архив, а с несжатыми только ту часть, которая и правда оказалаась запорчена.

Поскольку стриммер устройство символьное, невозможно указать имя файла архива на ленте. Имя в команде tar просто задает имя устройства, ``/dev/nst0'', первый стриммер на SCSI.

Note

Обратите внимание: При использовании имени `` /dev/nst0'' лента не будет перемотана после записи архива, что позволяет записывать несколько архивов один за другим на ленту стриммера. А если перемотка нужна, используйте имя ``/dev/st0''.

Поскольку мы не используем имя файла, можно вписать сведения об архиве прямо в него опцией ``--label''.

Будут архивироваться файлы из каталогов ``/etc/'', ``/home/'', ``/usr/local'' и ``/var/spool/'' (кроме Squid cache).

При работе с лентой можно использовать команды для перемотки и извлечения кассеты из стриммера:


mt -f /dev/nst0 rewind

mt -f /dev/nst0 offline

Tip

Замечание: Первый символ ``/'' (slash) будет удален программой tar после создания архива. Такой режим работы задан по умолчанию и нужен, чтобы Вы случайно не перезаписали критические файлы их старыми версиями. Если Вы хотите как раз обратного результата, задайте параметр ``--absolute-paths'', тогда tar сохранит полные пути. Я не советую делать это, поскольку такой подход опасен!

Резервирование программой ``KDat'':

При использовании KDE утилита ``KDat'' может показаться более подходящей из-за ее дружественного интерфейса. На самом деле KDat всего лишь оболочка для ``tar''. Так что все, что зарезервировано с помощью KDat можно прочитать в tar! Совместимость гарантирована.

Tip

Замечание: Даже если не установили полный комплект KDE, можно использовать KDat до тех пор, пока установлены библиотеки Qt.

При первом запуске KDat нужно создать профиль резервирования. Он сообщает KDat какие файлы нужно резервировать. Если желаете, можете создать больше чем один профиль в зависимости от потребностей (например, Вы могли бы создать профили “Full Backup” для полного резервирования системы и “Quick Backup” для резервирования только пользовательских файлов).

Для создания профиля выберите “Create Backup Profile” из пункта “File” в строке меню (или щелкните правой кнопкой мышки на папке “ Backup Profiles” и выберите “ Create Backup Profile”). Можно задать разные опции в окне KDat: имя профиля, имя архива, опции tar и прочее. Щелкните на “Help” для подробного описания опций.

Для указания того, какие файлы надо резервировать, щелкните левой кнопкой на checkbox около папки ``/ ''. Это включит в список каталог вместе со всеми его подкаталогами. Теперь щелкните левой кнопкой на маленьком ``+'' рядом с папкой. Папка откроется, показав что в ней есть. Теперь можно исключить ненужные объекты простым щелчком левой кнопкой на checkbox рядом с каждым каталогом или файлом, в резервировании которых нет необходимости. Закончив выбор объектов, щелкните левой кнопкой на создаваемом профиле, а затем на кнопке “ Files >>” для перемещения выбранных объектов в профиль резервирования.

Note

Обратите внимание: Если данные не помещаются на носитель, придется создать по профилю на каждую порцию данных.

Для выполнения резервирования вставьте ленту в стриммер и выберите “Mount Tape” из меню “ File” (или щелкните левой кнопкой на пиктограмме ленты). Лента будет смонтирована. Поскольку стриммер устройство символьное, его нельзя монтировать как диск. Так что KDat перемотает ленту на начало и попытается прочитать заголовок. Если найдет, попытается найти на жестком диске оглавление ленты. В противном случае KDat предложит отформатировать ленту.

Note

Обратите внимание: Если KDat начнет жаловаться, что лента не находится в стриммере, а она там, Вы должны гарантировать что в настройках определено правильное имя устройства: щелкните левой кнопкой мыши на пункт “Edit” в меню и выберите пункт “User Preferences”.

Когда KDat смонтирует ленту, перед началом резервирования надо выбрать профиль, который будет использован. Щелкните правой кнопкой мышки на нужном профиле и левой кнопкой на опции “Backup ”. KDat сначала отобразит диалоговое окно, показывая Вам детали профиля, щелкните левой кнопкой на “Ok” для начала резервирования.

В процессе резервирования KDat отобразит диалоговое окно со статистикой (прошедшее время, сколько зарезервировано, процент завершения, предполагаемое оставшееся время, количество файлов и их размер) и список зарезервированных файлов. Полное резервирование имеет дело с гигабайтами данных и может занять несколько часов. Оно может быть прервано в любое время щелчком левой кнопкой мышки по кнопке “Abort”.

После завершения резервирования размонтируйте ленту, выбрав из меню “Edit” пункт “Unmount Tape” или щелкнув левой кнопкой мышки по пиктограмме ленты, что приведет к перемотке и выдаче кассеты.