План перехода с Windows на Linux: Часть 8. Резервное копирование и восстановление

Краткое руководство по резервному копированию и восстановлению в Linux

Создатель e-business приложений компании IBM Крис Волден будет вашим проводником в серии из девяти статей с сайта IBM developerWorks, посвященных переориентации ваших навыков в работе с Windows окружением к работе в среде Linux. Он затрагивает все вопросы, начиная от регистрации до настройки сети и от командной строки до справочных систем -- и даже о компиляции пакетов из исходного кода. В этой части мы рассмотрим, из чего состоит система, обсудим планирование и выполнение регулярного резервного копирования с целью восстановления и обеспечения безопасности.

Крис Волден, e-business архитектор, IBM

Крис Волден (Chris Walden) -- e-business архитектор в IBM Developer Relations Technical Consulting, Остин, штат Техас, он занимается образовательской деятельностью, внедрением и консультированием среди бизнес-партнеров IBM. Он -- официальный местный фанатик Linux и распространяет хорошие новости среди тех, кто их слушает. Помимо исполнения обязанностей архитектора он управляет всеми Linux-серверами инфраструктуры, которые содержат файловые сервисы, сервисы печати и другие прикладные сервисы в кроссплатформенном пользовательском окружении. Имеет десятилетний опыт работы в компьютерной отрасли от осуществления поддержки до разработки Web-приложений и консалтинга.



05.04.2007

Linux -- это стабильная и надежная система. Тем не менее, в любой компьютерной системе могут происходить непредвиденные события, такие как, например, сбой оборудования. Надежное резервное копирование важной конфигурационной информации и данных -- неотъемлемая часть плана администрирования системы. Существует множество подходов к созданию резервных копий в Linux. Они варьируются от простых методов, основанных на выполнении сценариев, до использования сложных коммерческих продуктов. Резервное копирование может выполняться на удаленные сетевые устройства или на магнитную ленту и другие извлекаемые устройства. Вы можете копировать файлы или создавать образ диска. Вариантов множество, и вы можете корректировать и смешивать различные подходы, чтобы ваш план копирования наилучшим образом подходил для вашей ситуации.

Какова ваша стратегия?

Существует много различных подходов к созданию резервных копий системы. Чтобы получить общее представление об этом вам, возможно, имеет смысл прочесть статью "Introduction to Backing Up and Restoring Data", ссылка на которую есть в разделе Ресурсы в конце данной статьи.

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


Что копировать?

Ориентированная на файлы природа Linux дает огромное преимущество при выполнении резервного копирования и при восстановлении системы. В Windows реестр крайне системно зависим. Настройка системы и установка оборудования -- это гораздо больше, нежели простое добавление файлов в систему. Таким образом, восстановление системы требует программного обеспечения, которое учитывает такие индивидуальные особенности. В Linux ситуация иная. Конфигурационные файлы здесь имеют текстовый вид и практически не зависят от системы, за исключением моментов, когда они напрямую связаны с оборудованием. В современном подходе аппаратные драйвера представляют собой динамически загружаемые модули, что позволяет сделать ядро менее зависимым от системы. Поэтому резервное копирование не превращается в решение головоломки о том, каким образом на имеющееся оборудование была инсталлирована система, а фактически представляет собой архивирование и разархивирование файлов.

Вот некоторые каталоги, которые имеет смысл копировать:

  • /etc
    Содержит все ваши ключевые конфигурационные файлы. В их число входят сетевые настройки, имя системы, правила брандмауэра, пользователи, группы и другие системные элементы.
  • /var
    Содержит информацию, используемую вашими системными демонами (службами), в том числе настройки DNS, DHCP leases, файлы почтового буфера, файлы HTTP сервера, конфигурации db2 и другие.
  • /home
    Содержит домашние каталоги по умолчанию для всех ваших пользователей. Хранит данные о персональных настройках, загруженных файлах и другую ценную для ваших пользователей информацию.
  • /root
    Домашний каталог привилегированного пользователя root.
  • /opt
    Каталог, для несистемного программного обеспечения. Сюда устанавливается программное обеспечение IBM. OpenOffice, JDKs и другое программное обеспечение по умолчанию так же устанавливается в этот каталог.

Ниже приведены каталоги, для которых не надо выполнять резервное копирование.

  • /proc
    Никогда не выполняйте резервное копирование для этого каталога. В нем лежат не реальные файлы, а лишь виртуальный образ работающего ядра и среды. Он содержит такие файлы, как /proc/kcore -- виртуальный образ всей используемой памяти. Копирование этого каталога -- лишь пустая трата ресурсов.
  • /dev
    Содержит файловое представление ваших аппаратных устройств. Вы можете выполнить резервное копирование каталога /dev, если планируете начинать восстановление с пустой системы. Однако, если вы планируете восстановление с уже инсталлированным Linux, то нет необходимости копирования /dev.

Другие директории содержат системные файлы и установленные программные пакеты. В случае сервера большая часть этой информации остается неизменной. Большинство изменений происходит в каталогах /etc и /home. Но для полноты вы можете скопировать и их.

В случае production-систем, где я хочу быть уверен, что мои данные не потеряются, я, скорее всего, выполню резервное копирование всей системы, за исключением директории /proc. Если бы я главным образом волновался о данных пользователей и настройках, я выполнил бы только резервное копирование систем /etc, /var, /home и /root.


Средства резервного копирования

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

tar

tar -- это классическая команда Unix, которая была перенесена в Linux. tar -- это аббревиатура tape archive, изначально эта команда была предназначена для архивирования файлов на магнитную ленту. Если вы загружали какой-нибудь Linux код, то, скорее всего, вы уже сталкивались с tar файлами. Это файловая команда, которая последовательно компонует файлы в непрерывную цепь.

Благодаря тому, что команда tar может архивировать целые деревья каталогов, она особенно хорошо подходит для создания резервных копий. Восстановление можно выполнять для архивов целиком, либо для отдельных файлов и каталогов. Резервные копии могут размещаться на файловых устройствах или на магнитной ленте. При восстановлении файлы могут быть перенаправлены и размещены в каталоге (или системе), отличном от того, с которого были сохранены. Команда tar не зависит от файловой системы. Она может использоваться в файловых системах ext2, ext3, jfs, Reiser и т.д.

Команда tar в использовании очень похожа на файловую служебную программу, такую как PKZip. Вы указываете ей исходный объект, который может быть файлом или устройством и затем перечисляете файлы, которые хотите запаковать. По ходу дела вы можете сжать архив, используя стандартные типы сжатия, или использовать для этих целей внешнюю программу сжатия, на ваш выбор. Используйте tar -j, чтобы сжимать или извлекать файлы из архива при помощи утилиты bzip2, или tar -j, чтобы сжимать или извлекать файлы из архива при помощи утилиты gzip.

Для того чтобы используя tar создать на ленточном SCSI-устройстве резервную копию всей системы, кроме каталога /proc, введите:

tar -cpf /dev/st0 / --exclude=/proc

В приведенном выше примере, ключ -c указывает на то, что создается архив. Ключ -p нужен для того, чтобы сохранить права доступа для файлов, что является необходимым условием для хорошего резервного копирования. Ключ -f указывает на имя файла для архива. В данном случае мы используем накопитель на магнитной ленте /dev/st0. Символ / задает, что именно мы хотим копировать. Поскольку в нашем случае это вся файловая система, то указан корневой каталог. При ссылке на каталог (в конце которого стоит символ /) tar автоматически рекурсивно обходит все подкаталоги. И, наконец, мы исключаем каталог /proc, поскольку он не содержит ничего ценного для нас. Если резервная копия не умещается на одной магнитной ленте, то мы добавим ключ -M (здесь не показан) -- указание на многотомный архив.

На всякий случай

Не забывайте, что Linux чувствителен к регистру. Например, команда tar вводится в нижнем регистре. Ключи могут быть нижнего, верхнего или смешанных регистров. Так, например, -t и -T выполняют различные функции. Имена файлов и каталогов могут содержать символы из верхнего и нижнего регистров и так же, как команды и ключи, чувствительны к регистру.

Чтобы восстановить файл или файлы, команда tar используется с ключом extract (-x):

tar -xpf /dev/st0 -C /

Ключ -f снова ссылается на наш файл, а -p указывает на то, что мы хотим восстановить заархивированные данные, сохранив права доступа. Ключ -x указывает на восстановление из архива. Ключ -C / указывает на то, что восстановление должно производится в корневой каталог. Команда tar по умолчанию восстанавливает архив в тот каталог, из которого была запущена. Ключ -C запрещает восстановление в текущий каталог.

Две другие команды tar, которые вы, скорее всего, будете часто использовать -- это ключи -t и -d. Ключ -t выводит содержимое архива. Ключ -d сравнивает содержимое архива с текущими файлами в системе.

Для облегчения работы и редактирования вы можете записать файлы и каталоги, которые вы хотите архивировать, в текстовый файл, на который можно сослаться при помощи ключа -T. Их можно комбинировать с другими каталогами, указанными в командной строке. В следующем примере производится резервное копирование всех файлов и каталогов, включенных в файл MyFiles, каталога /root, и всех файлов с расширением iso из каталога /tmp.

tar -cpf /dev/st0 -T MyFiles /root /tmp/*.iso

Список файлов представляет собой простой текстовый файл, содержащий файлы и каталоги в виде списка. Вот пример такого файла:

/etc
/var
/home
/usr/local
/opt

Обратите внимание, что команда tar -T (или files-from) не воспринимает шаблон. Имена файлов должны быть указаны точно. В примере выше продемонстрирован способ сослаться на файлы отдельно. Вы также можете выполнить скрипт, который проведет поиск в системе и создаст список. Вот пример такого скрипта:

#!/bin/sh
cat MyFiles > TempList
find /usr/share -iname *.png >> TempList
find /tmp -iname *.iso >> TempList
tar -cpzMf /dev/st0 -T TempList

Скрипт, приведенный выше, копирует весь существующий список файлов из MyFiles в TempList. Затем он выполняет две команды find для поиска в файловой системе файлов, удовлетворяющих определенному условию, и добавляет их в TempList. Первая команда поиска ищет в каталоге /usr/share все файлы, заканчивающиеся на .png. Вторая команда поиска ищет в каталоге /tmp все файлы, заканчивающиеся на .iso. После создания списка запускается команда tar, которая создаст новый архив (create) на файловом устройстве (file device) /dev/st0 (первый SCSI-носитель на магнитной ленте), который будет сжат в формате gzip с сохранением всех прав доступа для файлов (permissions). Архив будет разбит на несколько томов (Multiple volumes). Имена файлов, которые должны быть заархивированы будут взяты (Taken) из файла TempList.

Использование скриптов также может быть полезно при выполнении более сложных действий, таких как инкрементальное резервное копирование. Замечательный скрипт приведен Герхардом Моурани в его книге Securing and Optimizing Linux, ссылку на которую вы можете найти в разделе Ресурсы в конце данной статьи.

Скрипты также могут восстанавливать файлы, хотя восстановление часто выполняется вручную. Как говорилось выше, в этом случае вместо ключа -c используется ключ -x. Восстановление может производиться как для архива целиком, так и для отдельных указанных файлов или каталогов. Здесь для ссылок на файлы в архиве можно использовать шаблоны. Вы можете так же использовать ключи для команд dump и restore.


Команды dump и restore

Команда dump выполняет практически те же функции, что и tar. Однако она скорее предназначена для работы с файловыми системами, а не отдельными файлами. Цитируя из руководства к dump: "dump проверят файлы файловой системы ext2 и решает, какие файлы нуждаются в резервном копировании. Эти файлы копируются для сохранности на указанный диск, магнитную ленту или другой носитель данных. Дамп, размер которого больше, чем размер носителя на выходе, разбивается на несколько томов. На большинстве носителей этот размер определяется путем записи до тех пор, пока не будет получен сигнал о переполнении носителя."

Программу dump дополняет программа restore, используемая для восстановления сохраненных файлов из дампа.

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

Как dump так и restore можно запустить по сети, то есть вы можете выполнять архивацию или восстановление с удаленных устройств. Команды dump и restore работают с ленточными и файловыми устройствами и обладают большим набором опций. Однако эти команды ограничены только файловыми системами ext2 и ext3. Если вы работаете с JFS, Reiser или другими файловыми системами, вам необходима другая утилита, например tar.


Резервное копирование с использованием dump

С помощью команды dump резервную копию сделать довольно просто. Приведенная ниже команда выполняет полное резервное копирование Linux с файловыми системами ext2 и ext3 на SCSI ленточное устройство:

dump 0f /dev/nst0 /boot
dump 0f /dev/nst0 /

В этом примере в нашей системе используются две файловые системы. Одна для каталога /boot, а другая для / -- стандартная конфигурация. При выполнении копирования на каждую из них надо ссылаться по отдельности. /dev/nst0 ссылается на первое ленточное SCSI устройство, использующуюся в режиме без перемотки. Этот режим гарантирует, что тома на ленте будут следовать четко друг за другом.

Интересной особенностью команды dump является встроенная функциональная возможность создания инкрементальной резервной копии. В примере выше 0 указывает на уровень 0 или на базовый уровень резервной копии. Такое копирование всей системы вам следует выполнять периодически для охвата системы целиком. Для изменения уровня последующих резервных копий вы можете использовать другие номера (1-9) вместо 0. При резервном копировании уровня 1 будут сохранены все файлы, которые были изменены с момента создания копии уровня 0. При копировании уровня 2 будет сохранено все, что было изменено с момента создания копии уровня 1 и так далее. То же самое можно выполнить с помощью команды tar, используя скрипт, но для этого необходимо, чтобы человек, пишущий скрипт, имел механизм для определения, когда было проведено последнее копирование. Команда dump обладает собственным алгоритмом, обновляющим update-файл (/etc/dumpupdates) при проведении резервного копирования. Update-файл сбрасывается в исходное состояние всякий раз, когда происходит резервное копирование нулевого уровня. При копировании последующих уровней ставятся метки вплоть до того момента, когда произойдет следующее копирование нулевого уровня. Если вы собираетесь проводить копирование на ленточные устройства, dump автоматически произведет деление на тома.

Пропуск файлов

Существует возможность отметить те файлы и директории, которые будут пропущены командой dump. Для этого используется команда chattr, которая изменяет расширенные атрибуты файлов в файловых системах ext2 и ext3.

chattr +d <filename>

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


Восстановление при помощи команды restore

Для восстановления информации, сохраненной с помощью команды dump, используется команда restore. По аналогии с tar, команда restore может вывести содержимое архива (-t) и сравнить архивы с текущими файлами (-C). Будьте внимательны с командой restore при восстановлении данных. Существует два различных подхода и для того, чтобы получить предсказуемые результаты, вы должны выбрать верный.

Воссоздание (-r)

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

Вот пример полного воссоздания из дампа, выполненного в примере выше.

restore -rf /dev/nst0

Такая команда должна быть выполнена для каждой файловой системы, требующей восстановления.

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

Извлечение (-x)

Если вам надо работать с отдельными файлами, а не с целыми файловыми системами, используйте для извлечения ключ -x. Например, чтобы извлечь один каталог /etc из архива на ленточном накопителе, выполните следующую команду:

restore -xf /dev/nst0 /etc

Интерактивное восстановление (-i)

Еще одна возможность, заложенная в команду restore, -- это диалоговый режим. Выполнив команду :

restore -if /dev/nst0

вы попадете в интерактивную оболочку, в которой будут показаны элементы, содержащиеся в архиве. Введя "help" вы увидите список команд. Затем вы можете просмотреть и выбрать элементы, которые вы хотите извлечь. Имейте ввиду, что все файлы, которые вы извлечете, будут помещены в ваш текущий каталог.


dump или tar?

Обе команды, dump и tar, имеют своих почитателей. У каждой есть свои преимущества и недостатки. Если вы используете файловые системы, отличные от ext2 или ext3, то dump вам не подходит. Однако, в противном случае, команда dump позволит сократить до минимума использование скриптов и, кроме того, облегчит процесс восстановления благодаря наличию интерактивного режима.

Лично я предпочитаю использовать команду tar, поскольку я люблю писать скрипты, потому что они обеспечивают высокий уровень контроля. Кроме того, существуют многоплатформенные средства для работы с файлами .tar.


Другие утилиты

В принципе, любую программу, которая может копировать файлы, можно использовать для выполнения того или иного вида резервного копирования в Linux. Некоторые люди используют для создания резервных копий программы cpio и dd. cpio -- утилита архивации, похожая на tar. Она гораздо менее распространена. dd -- это утилита копирования файловой системы, создающая бинарные копии файловой системы. Утилиту dd можно использовать для создания образа жесткого диска в духе таких программных продуктов, как Symantec Ghost. Однако dd – это не файловая утилита, поэтому вы можете восстанавливать данные только на идентичные разделы жесткого диска.


Коммерческие программные продукты для резервного копирования

Существует несколько коммерческих программ резервного копирования, предназначенных для Linux. Коммерческие продукты обычно предоставляют удобный интерфейс и систему отчетности, в то время как, используя утилиты dump и tar, вам придется обойтись без этих удобств. Коммерческие программы предлагают широкий выбор функций. Наибольшая польза, которую могут принести коммерческие пакеты, – это предложить вам уже готовую для использования встроенную стратегию выполнения резервного копирования. Разработчики таких программ в свое время уже прошли через все те ошибки, что вам еще только предстоит сделать, и плата за их опыт невелика, по сравнению с потерей важных данных.

Tivoli Storage Manager

Возможно, лучшая коммерческая утилита резервного копирования и управления архивами, доступная теперь в Linux – это Tivoli Storage Manager. Tivoli Storage Manager Server работает на нескольких платформах, в том числе Linux, а клиент поддерживает еще большее число платформ.

Storage Manager Server конфигурируется для работы с устройствами, способными выполнить резервную копию всего окружения. Любая система, которая участвует в копировании, загружает клиента, который взаимодействует с сервером. Резервное копирование может быть автоматическим, выполненным вручную с помощью интерфейса клиента Tivoli Storage Manager или же выполненным удаленно, через Web-интерфейс.

Поведение TSM основано на политиках, что позволяет определить основные правила резервного копирования без постоянного обновления списка файлов. Кроме того, IBM Tivoli Storage Resource Manager может распознавать, оценивать, контролировать и прогнозировать использование устройств для хранения данных в масштабах предприятия, выявлять потенциальные проблемы и устранять неполадки в автоматическом режиме. Более подробную информацию вы найдете на странице Tivoli (ссылка приведена в разделе Ресурсы).

Рисунок 1. Меню Tivoli Storage Manager
Рисунок 1. Меню Tivoli Storage Manager

Управление резервным копированием и восстановлением производится с удаленного устройства.

Рисунок 2. Интерфейс Tivoli Storage Manager.
Рисунок 2. Интерфейс Tivoli Storage Manager

Займемся копированием

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

Linux изначально поставляется с некоторыми полезными инструментами резервного копирования. Два наиболее распространенных -- это tar и dump/restore. Они оба могут произвести полное копирование системы. При творческом подходе к написанию сценария вы сможете воплотить в жизнь особенную схему резервного копирования, предназначенную для сохранения систем как локально, так и удаленно.

Однако это большая ответственность -- самостоятельно писать сценарии для проведения резервного копирования, особенно в случае большой корпорации. Коммерческое программное обеспечение, такое как Tivoli Storage Manager, поставит точку на обучении и позволит вам немедленно взять в свои руки управление вашим резервным копированием, но, возможно, вам придется подкорректировать вашу стратегию, для того чтобы приспособиться к тому, что могут предложить инструменты копирования.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=207233
ArticleTitle=План перехода с Windows на Linux: Часть 8. Резервное копирование и восстановление
publish-date=04052007