Linux
Шрифт:
Стримеры
Пожалуй, одно из старейших устройств резервного копирования. За свою долгую жизнь получило достаточно широкое распространение. Достоинства – отработанная десятилетиями технология, неплохая надежность и средняя себестоимость хранения информации. Недостатки – привод достаточно дорогой, чехарда с форматами кассет и хранения данных, срок службы лент составляет лишь несколько лет.
На базе ленточных накопителей создают библиотеки и роботизированные системы для хранения огромных объемов данных, однако вам вряд ли доведется столкнуться с такими устройствами.
Тестирование архивов
Обязательным элементом резервного копирования является тестирование полученных архивов. Хранение непроверенной резервной копии создает ложное ощущение защищенности. Исходя из этого, каждая резервная копия, прежде чем помещать ее
Обязательно необходимо произвести пробное восстановление системы из резервной копии, во-первых – для проверки процедуры восстановления данных, во-вторых, чтобы убедиться в корректности процедуры резервирования данных.
Еще одна проблема, связанная с восстановлением систем из резервных копий, заключается в установлении права владения файлами. Когда данные извлекаются из файла копии пользователем с правами root, утилита GNU tar предпринимает попытки восстановить существовавшие права владения (пользователя и группы) каждым файлом, но только если при ее вызове был установлен переключатель (—preserve-permission). В противном случае утилита tar будет использовать текущие установки UMASK. Однако, если перечисленных в файле tar пользователей и групп не существует, то право владения не сможет быть корректно установлено!
Следовательно, прежде чем выполнять восстановление любых некорневых файлов системы, следует восстановить файлы /etc/passwd и /etc/group.
Даже в том случае, когда компьютер под Linux используется в качестве рабочей станции и имеет единственного пользователя, корректное функционирование многих программ и подсистем будет зависеть от установленных прав владения и разрешений на доступ к системным файлам.
Риск при тестировании архивов
Тестирование процедур восстановления может быть достаточно рискованно, особенно когда вы только отрабатываете процедуру резервного копирования. Возможно случайное разрушение файлов, относящихся к другому приложению, которые использовались в момент проведения попытки восстановления файлов.
Самый безопасный способ выполнить контрольное восстановление системы – провести его на резервной рабочей станции, а не на находящемся в промышленной эксплуатации сервере.
Утилиты резервного копирования
В этом разделе приводятся примеры подготовки и создания полных, выборочных и инкрементных резервных копий с использованием утилит tar, cpio и dump/restore.
Для определенности будем считать, что в нашей системе установлен стример. Аналогичным образом можно использовать и другое оборудование.
Создание резервной копии утилитой tar
Самый простой вариант использования утилиты tar – просто создать архив всех каталогов, начиная с корневого. В этом случае простейшая команда для вызова утилиты tar с целью создания копии будет иметь следующий вид:
tar с /
Однако при выполнении указанной команды возникнет несколько проблем. Во-первых, по умолчанию утилита может использовать не тот тип ленточного устройства, который установлен на данном компьютере, и даже вообще осуществлять вывод не на магнитную ленту. Во-вторых, в этом примере будет считано все дерево файловой системы. Это значит, что будет обработана файловая система /proc, любые установленные CD-ROM, файловые системы NFS и Samba, а также другие разделяемые сетевые файловые системы.
Приведенный пример может вызвать и несколько других проблем. Например, при обработке подобной команды GNU tar никогда не будет обеспечивать специальной поддержки sparse-фэйлов (файлов, имеющих реальный размер меньше, чем зарезервировано под них места в файловой системе) и выполнять сжатие выходной информации.
Ниже приведен пример более корректного вызова утилиты.tar cSlzf – $(backdirs) | buffer -о /dev/st0
В этом примере создается (с) архив с поддержкой sparse-фэйлов (s), ограниченный локальными файловыми системами (l). Выполняется сжатие данных (z) и их запись в файл (f) stdout, в архив включаются только указанные каталоги (backdirs).
Созданный архив по каналу передается программе buffer, которая записывает его (_ о) на первое ленточное устройство с интерфейсом SCSI. Подобный подход следует использовать и при получении резервной копии от программы сжатия или через сеть.
Параметр bakdirs – это сценарий, в котором перечисляются каталоги и файлы, включаемые в создаваемую резервную копию. Сценарий backdirs может состоять просто из команд echo, которые перечисляют все точки входа локальных файловых систем (за исключением каталога /proc, любых каталогов /temp, установленных CD-ROM, каталогов NFS и других сетевых ресурсов). Назначение bakdirs состоит в просмотре и фильтрации выходных данных команд mount, что позволяет динамически включать в копию только требуемые файловые системы. Неудобство использования обычного статического списка состоит в том, что он не может автоматически обновляться при добавлении новых файловых систем.
Избегайте дублирования ссылок в командной строке, содержащей вызов утилиты tar. Если одновременно будут копироваться каталоги /some/moutpoint и /some/mountpoint/somedir, расположенные в одной и той же файловой системе, утилита tar дважды поместит в архив все содержимое каталога /some/mountpoint/ somedir.
Использование утилиты cpio
Утилита cpio представляет собой еще один традиционный инструмент создания резервных копий и архивирования файловых систем. В сравнении с утилитой tar ее работа организована иначе.
Во многих случаях принимаемый в утилите cpio подход к указанию подлежащих копированию или восстановлению файлов и каталогов является прямо противоположным подходу, применяемому в утилите tar. При создании архива утилите tar передается список файлов и каталогов, указываемых как параметры командной строки. Любой указанный каталог просматривается рекурсивно. При создании архива с помощью утилиты cpio ей предоставляется список объектов (имена файлов и каталогов, символические имена любых устройств, гнезда доменов UNIX, поименованные каналы и т. п.). Этот список помещается в стандартный поток stdin утилиты cpio с помощью канала и обычно генерируется командой find.
Простая команда, выполняющая копирование всей файловой системы, выглядит следующим образом:find / -print0 I cpio -o0B > /dev/st0
Результаты выполнения команды find будут включать каталог /proc и тому подобные нежелательные для резервного копирования каталоги. Уточнив используемые параметры команды find, можно исправить ситуацию:
find /* -fstype ext2 -print0 I cpio -o0B > /dev/st0
В этом примере копируемые объекты ограничены только файловыми системами типа Ext2. Также будут пропущены все скрытые файлы и каталоги. Устройства вывода информации на магнитную ленту стоят дорого. Получить доступ к удаленным устройствам не намного сложнее, чем к локальным:
find /* -fstype ext2 -print0 | ssh $TAPEHOST «cpio -o0B I buffer -o /dev/st0»
Обратите внимание, что для обращения к удаленным ленточным устройствам используется команда buffer.
Восстановление с локального ленточного устройства
Еще одно принципиальное различие между утилитами tar и cpio состоит в способе сохранения и восстановления абсолютных путей. В случае с утилитой tar ведущая косая черта в абсолютных именах файлов при создании копии удаляется. Утилита cpio в процессе восстановления принудительно превращает все пути в относительные.
Как правило, файлы должны восстанавливаться в тех каталогах, которые будут задаваться относительно текущего каталога (или – в некоторых случаях – каталога root). По умолчанию утилита cpio не восстанавливает каталогов, поэтому при ее вызове следует указывать параметр -d.
Восстановление с удаленного ленточного устройства
Восстановление с удаленных ленточных устройств осуществляется так же просто, как и копирование, например:ssh $OTHERHOST \'buffer -i /devst0\', I \'find /* -fstype ext2 -print0 | cpio -id\'
Если необходимо восстановить только некоторые файлы, добавьте в конец команды cpio список глобальных шаблонов.
Здесь обнаруживается еще одно различие между утилитами cpio и tar, связанное с выполнением частичного восстановления. При использовании утилиты tar список требуемых файлов и каталогов можно поместить прямо в команду ее вызова. Однако утилита tar не допускает использования глобальных шаблонов.
При работе с утилитой tar типичный способ обойти это ограничение состоит в том, чтобы извлечь индекс архива в файл путем простого перенаправления вывода. Данные полученного файла фильтруются с помощью команды grep, после чего полученный список передается команде вызова утилиты tar для извлечения данных. Например, подготовив файл restorelist, содержащий имена требуемых файлов и каталогов, помещенные в отдельные строки, можно ввести следующую команду: