Restore man

Материал из rrv-wiki
Перейти к навигации Перейти к поиску

Взято здесь, и скопировано на всякий случай.

restore

Пример от себя:

# cd  /mnt/root; dump -f - / | restore -rf -

Здесь копируем корневую партицию в примонтированную в /mnt/root, причем если это производится на рабочей системе то используем ключ -L читаем dump. Если папка в которую мы восстанавливаем, не пустая то надо удалить в ней все файлы (может помочь команда chflags -R noschg папка_которую_надо_удалить для снятия файла не удаляемости)

Либо так:

# cd  /; dump -f - /dev/ad1s1a | restore -rf -

Здесь производим обратное копирование.

Если использовалось сжатие с помощью gzip (/sbin/dump -a -h 0 -L -0u -f - /usr | gzip -2 | ssh dumpuser@backupserver.ru dd of=/dumpdir/dump-usr.gz), то восстановление будет выглядеть так:

# cd /mnt/usr && ssh dumpuser@backupserver.ru "cat /dumpdir/dump-usr.gz" | gunzip | restore -rf -

Для восстановления одного файла (/etc/master.passwd) используем:

# restore -f /mnt/root -x /etc/master.passwd
You have not read any tapes yet.
If you are extracting just a few files, start with the last volume
and work towards the first; restore can quickly skip tapes that
have no further files to extract. Otherwise, begin with volume 1.
Specify next volume #: 1       #(надо ответить 1)
set owner/mode for '.'? [yn] y

Восстановление происходит в текущую директорию сохраняя иерархию, то есть в текущей директории создастся папка etc и в ней файл master.passwd.

Либо полное восстановление (из другой системы, например из под LiveCD):

# newfs /dev/da0s1a                                # Создание файловой системы                                                                                                  
# mount /dev/da0s1a /mnt                           # монтируем ее в mnt                                                                                                         
# cd /mnt                                          # нереходим в нее                                                                                                            
# restory -rf /home/dump/ROOT            # востанавливаем партицию 

Имя

restore, rrestore — восстановление файлов или файловых систем из бэкапов сделаных с помощью утилиты dump.

Сценарий

restore -i [-dhmNuvy] [-b blocksize] [-f file | -P pipecommand]
          [-s fileno]
restore -R [-dNuvy] [-b blocksize] [-f file | -P pipecommand] [-s fileno]
restore -r [-dNuvy] [-b blocksize] [-f file | -P pipecommand] [-s fileno]
restore -t [-dhNuvy] [-b blocksize] [-f file | -P pipecommand]
          [-s fileno] [file ...]
restore -x [-dhmNuvy] [-b blocksize] [-f file | -P pipecommand]
          [-s fileno] [file ...]

rrestore - альтернативное имя для restore

(Синтаксис опций 4.3BSD внесен в программу для обратной совместимости, но здесь не документирован)

Описание

Утилита restore производит функции обратные dump'у. Полное резервное копирование файловой системы может быть восстановлено, а отдельные инкрементальные бэкапы развернуты поверх основного бекапа. Одиночные файлы и директории могут быть восстановлены из полных или частичных бекапов. Утилита restore работает по сети; для реализации этих возможностей смотрите -f и -P флаги, описанные ниже. Другие аргументы команд это файлы и директории, указывающие файлы которые будут восстановлены. До тех пор пока флаг -h не будет указан (смотрите ниже), имя директории будет появлятся с файлами и (рекурсивно) поддиректориями, этой директории.

Совершенно точно потребуется один из следующих флагов:

-i Этот режим позволяет интерактивное восстановление файлов из бекапа. После чтения информации о директории из бекапа, restore предоставляет интерфейс схожий с shell'ом, который позволяет пользователю перемещатся внутри дерева директорий, выбирая файлы которые будут извлечены. Доступные команды даются ниже; для этих команд требуется аргумент, по умолчанию это текущая директория.

add[arg] Текущая директория или заданный аргумент добавляются к списку файлов которые будут извлекатся. Если директория указана, тогда директория вместе с содержимым будет добавлена к списку извлечения (если не использовался флаг -h). Файлы находящиеся в списке извлечения содержат спереди символ "*", в момент просмотра программой ls.

cd arg Изменение текущей рабочей директории

delete [arg] Текущая директория или заданый аргумент удаляются из списка файлов на извлечение. Если директория указана, тогда она вместе с содержимым удаляется из списка файлов на извлечение (если не использовался флаг -h). Самый целесообразный способ извлечения файлов состоит в том, что бы добавить директорию к списку извлечения а затем удалить те файлы которые не нужны.

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

help список доступных команд

ls [arg] Список текущей или заданной директории. Вхождения в директорию добавляются символом "/". Вхождения отмеченные на извлечение предваряются символом "*". Если флаг подробного вывода установлен номер inode каждой записи так же указывается.

pwd Выводит полный путь текущей директории.

quit Завершает работу незамедлительно, даже если список извлечения не пуст.

setmodes Все директории добавленные в список извлечения имеют собственного владельца, права, и время; ничего не извлекается из бэкапа. Это полезно для чистки после прерывания работы restore.

verbose Смысл схож с флагом -v. Когда он установлен, флаг verbose заставляет команду ls вывести список номеров inode для всех записей. Так же он заставляет restore вывести информацию о каждом файле который будет извлечен.

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

-R Запрашивает часть ленты, многотомного архива, с которой начнется полное восстановление (смотрите флаг -f ниже). Полезно, если восстановление было прервано.

-r Восстановление (создание заново файловой системы). Целевая файловая система, должна быть сделана ранее с newfs(8), смотнтирована, и пользователь должен перейти в подготовленную ранее файловую систему прежде чем начнется восстановление нулевого уровня из резервной копии. Если уровень 0 восстановлен удачно, флаг -r может использоватся для восстановления всех необходимых инкрементальных бекапов выше уровня 0. Флаг -r устраняет интерактивное извлечение файлов и может являтся вредным для здоровья, если он не будет применятся аккуратно. Например:

newfs /dev/da0s1a
mount /dev/da0s1a /mnt
cd /mnt

restore rf /dev/sa0

Учтите, что восстановление оставляет файлы restoresymtable в корневой директории для пропуска информации между икрементальными проходами восстановления. Файл должен быть удален когда последний инкрементальный бекап восстановлен. Утилита restore в сочетании с newfs(8) и dump(8), может использоватся для модификации параметров файловой системы таких как размер или размер блока.

-t Имена указанных файлов перечисляются если они присутствуют на бэкапе. Если аргументов файла не задано, тогда перечисляется корневая директория, которая приводит к перечислению всего содержимого всех директорий бекапа, если не был указан флаг -h. Учтите, что флаг -t заменяет функцию старой программы dumpdir(8).

-x Имена файлов читаются из заданного носителя. Если имя файла совпадает с директорией чье содержимое присутствует на резервной копии и флаг -h не определен, директория рекурсивно извлекается. Владелец, время модификации, и права восстанавливаются (если это возможно). Если аргументов файла не указывалось, тогда извлекается корневая директория, что приводит к извлечению всего содержимого бэкапа, если флаг -h не был определен.

Следующие дополнительные опции могут быть определены:

-b blocksize Количество килобайт на запись. Если опция -b не задана, restore попробует определить динамически размер блока носителя.

-d Посылает подробную отладочную информацию на stderr.

-f file Читает бэкап из файла; файл может являтся специальным файлом устройства как например /dev/sa0 (ленточный накопитель), /dev/da1c (дисковый накопитель), простым файлом, или "-" (стандартный вывод). Если имя файла имеет форму: "хост:файл", или "пользователь@хост:файл", restore прочтет названный файл на удаленном хосте используя rmt(8)

-P pipecommand Использование popen(3) для запуска строки скрипта sh(1) определенной pipecommand как вход для каждого тома. Порожденный stdin pipeline'а (/dev/fd0) перенаправляется из входного потока, и переменная окружения RESTORE_VOLUME устанавливается для текущего читаемого номера тома. Скрипт pipecommand запускается каждый раз когда том загружен таким образом, будто он является ленточным носителем.

-h Извлекает саму директорию, а не файлы которые в ней находятся. Таким образом предотвращается иерархическое восстановление полного поддерева из бекапа.

-m Извлекает только по номерам inode, а не по именам файлов. Это бывает полезно только для если нескольких файлов извлекаются, и ктото не хочет восстанавливать полный путь файла.

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

-s fileno Читать с определенного номера файла. Номера файлов начинаются с 1.

-u Когда создаете определенные типы файлов, resotore может создавать диагностическое предупреждение, если файлы существуют в директории. Для предотвращения этого флаг -u (unlink) заставляет restore удалять старые записи прежде чем создавать новые.

-v Обычно resore выполняет свою работу тихо. Флаг -v (verbose) заставляет выводить имя каждого файла

-y Не спрашивать пользователя прерывать ил восстановление в случае ошибки. Всегда попробуйте пропустить сбойный блок и продолжить.

Окружение

TAPE Устройство с которого происходит чтение резервной копии TMPDIR Имя директории где временные файлы будут созданы

Файлы

/dev/sa0           ленточный накопитель по умолчанию
/tmp/rstdir*       файл содержащий директории на ленте
/tmp/rstmode*      владелец, права, и отметка времени для директорий
./restoresymtable  информация прошедшая между икрементальными восстановлениями

Диагностика

Утилита restore пожалуется, если получит ошибку. Если опция -y была указанна, или пользователь ответил "y", restore продолжит восстановление.

Если резервное копирование было сделано с использованием более одной ленты, restore уведомит пользователя когда понадобится смонтировать новый раздел. Если флаги -x или -i были указаны, restore также спросит какой том пользователь желает смонтировать. Быстрый способ извлечь несоколько файлов это начать с последнего тома и двигатся к началу.

Существуют многочисленные проверки целостности, которые могут быть перечислены утилитой restore. Большинство проверок очевидно, либо "никогда не было". Самые распространенные перечислены ниже.

Конвертирование в новый формат файловой системы. Резервная копия созданая из старой файловой системы, загружена. Она автоматически будет переконвертирована в формат новой файловой системы.

<имя файла>: не найден на ленте Указанное имя файла присутствует в списке директорий но не найдено на ленте. Это вызвано ошибками чтения ленты, во время поиска файла или снятия копии на активной файловой системе.

ожидаемый следующий файл <номер inode>, имеет <номер inode> обнаружен файл не указанный в директории. Это может случится, если копия снималась на активной файловой системе.

Инкрементальный бекап слишком мал Во время инкрементального восстановления, бекап был записан до предыдущего инкрементального бекапа, или был загружен слишком низкий инкрементальный уровень

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

Ошибка чтения ленты во время восстановления <имя файла> Ошибка чтения ленты во время пропуска inode <номер inode> Ошибка чтения ленты во время попытки ресинхронизации Возникла ошибка чтения ленты или другого носителя. Если номер inode был пропущен или лента пыталась ресинхронизироватся, то извлеченные файлы не будут испорчены, хотя файлы могут быть не найдены на ленте.

resync restore, пропущено <количество> блоков После ошибки чтения бекапа, restore может ресинхронизировать себя. Это сообщение выведет список блоков которые были пропущены.

Смотрите так же

dump(8), mount(8), newfs(8), rmt(8)

История

Утилита restore появилась в 4.2BSD.

Ошибки

Утилита восстановления может очень удивится, когда происходят инкрементальные восстановления из бекапов сделаных на активной файловой системе без использования опции -L (смотрите dump(8)).

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

Для сетевого восстановления вы должны загрузить restore как root. Это необходимо из исторических соображений безопасности утилит dump и restore. (restore написана что бы быть setuid root, но мы не уверены что все ошибки исчезли из кода restore - запускайте setuid на свой страх и риск.)

Временные файлы /tmp/rstdir* и /tmp/rstmode* создаются из уникальных имен, основанных на дате сохранения и ID процесса (смотрите mktemp(3)), исключая случаи когда используются флаги -r или -R. Поэтому -R позволяет вам перезапустить -r операцию которая может быть прервана, временные файлы должны быть такими же, В остальных случаях файлы уникальны, потому что можно запустить два разных процесса сохранения в одно и тоже время и разделить операции которые не должны конфликтовать друг с другом.