В этом документе я использовал для машин имена "msdos" и "linux". "msdos" - это имя машины с ленточным накопителем, обычно работающей под MS-DOS. "linux" - имя машины, работающей под Linux, чьи диски нужно копировать на ленточный накопитель или с него. Для простоты я всегда называл первую машину "msdos", даже если она в данный момент работала под Linux. Более того, все пути в этом документе указаны относительно Linux машины с подключенными в систему SAR (Search-And-Rescue - Поиск-И-Спасение) дисками. То есть, файл паролей с жесткого диска вашего Linux компьютера будет /etc/passwd, а, к примеру, соответствующий файл на флоппи диске будет /tape144/etc/passwd.
Я пользуюсь скриптами для резервного копирования Карела Кьюбата (Karel Kubat) версии 1.03, их можно найти на
В этом документе я буду называть их просто - "скрипты копирования". Вам не обязательно использовать именно их. Лично я предпочитаю пользоваться ими, потому что они используют afio для создания несжатого архива сжатых файлов, вместо сжатого архива несжатых файлов. Первое намного безопасней, в случае ошибки чтения с носителя во время восстановления. Я понимаю, что Карел больше не сопровождает backup, а вместо этого написал "tob" (tape oriented backup). Работа с новым пакетом не должна значительно отличаться от описанной ниже, хотя я сам не пробовал его..
Прежде всего скачайте модуль ftape. Он входит в комплект всех современных ядер, но если вы используете старое, то можете найти модуль по адресу
Далее найдите образы загрузочного диска Slackware (я нашел сетевой диск, что, впрочем, не столь важно) и корневого диска tape144, и запишите их на флоппи-диски.
Модуль ftape будет работать только с ядром, под которым был собран. Я не смог заставить работать модуль ftape.o с корневого tape144 диска. Я думаю, что это произошло потому, что из него была вырезана символьная информация, из-за чего он не устанавливался. Так что вам придется собрать новое ядро, с поддержкой сети и ftape. Если вы используете старое ядро, то придется собирать и новый ftape.o. Почитайте указания, поставляемые вместе с архивом ftape. Не забывайте, что должны поддерживаться сетевые карты как машины с Linux, так и машины с MS-DOS.
Скопируйте вновь созданное ядро поверх старого на сетевой загрузочный диск. Для этого воспользуйтесь командой /bin/cp. Не используйте команду "dd", так как в этом случае вы просто создадите загрузочный образ ядра. Защитите диск от записи и пометьте его, как SAR#1.
Теперь подключите корневой tape144 диск. Во избежание неразберихи с именами файлов, я буду считать, что диск подключается в каталог /tape144. На нем нам понадобится дополнительное место, поэтому удаляем следующие файлы:
Теперь исправим небольшую проблему с конфигурацией inetd - для демона rsh нужно прописать полный путь. Измените строку 19 файла /tape144/etc/inetd.conf на:
Добавьте информацию о локальной сети в файл /tape144/etc/rc.d/rc.inet1, чтобы MS-DOS-машина могла с ней работать. Формат зависит от конфигурации вашей сети, можете просто скопировать соответствующие строки из файла /etc/rc.d/rc.inet1 с вашей Linux машины. Для моей сети нужно было добавить такие строки:
IP адрес из строки с ifconfig - это адрес MS-DOS машины.
Теперь скопируйте этот файл в /tape144/etc/rc.d/rc.inet1-l
и измените в новом файле IP адрес на соответствующий Linux машине (а не MS-DOS).
Далее удалите строки с 3 по 11 из /tape144/etc/rc.local. Это оператор if, запускающий файлы rc.inet*. Во время загрузки нам это не нужно.
Создайте новый файл: /tape144/root/.rhosts, содержащий строку:
linux root
где, опять таки, "linux" нужно заменить на полное имя (включая домен) или IP адрес Linux машины.
Заполните поле пароля в /tape144/etc/passwd для root, чтобы никто не мог зайти в систему в то время, когда вы копируете информацию на ленточный накопитель. Это можно сделать, скопировав соответствующее поле из файла /etc/passwd file file c вашей Linux машины.
Скопируйте /usr/bin/rsh в /tape144/usr/bin.
Скопируйте следующие файлы из /usr/etc в /tape144/usr/etc:
Создайте новый каталог для подключения файловой системы:
== mkdir /mnt2
и подключите в него раздел вашего жесткого диска. Возможно понадобится предварительно отформатировать раздел - следуйте указазниям из Linux Installation HOWTO. SAR диски содержат все необходимое для форматирования.
Воспользуйтесь дисками SAR#1 и SAR#2 для загрузки на MS-DOS машине и запустите скрипт /bin/msdosset. Скрипт берет NFS файл с дискеты, что займет какое-то время, потерпите. Затем скопируйте файлы с ленты в /mnt2 на Linux машине.
Если вы используете для копирования скрипты, то скопируйте "afio" в подкаталог /tape144/local/bin. Не обязательно держать остальные файлы, используемые скриптами, на SAR дисках - архив может быть восстановлен, с помощью лишь "afio" и "gzip".
Я не смог воспользоваться скриптами в том виде, в котором они поставлялись. Архив на ленте вроде бы создавался нормально, но что-либо восстановить из него не удавалось. Я обнаружил, что если убрать размер блока и преобразующие операторы, то все работает нормально. Вот патч для скрипта "netbackup". Используйте его как для копии на Linux машине, так и для копии SAR дисков.
Итак, вы закончили с диском SAR #2. Защитите его от записи.
Подключите чистый отформатированный диск (создайте его с помощью fdformat и mkfs). Скопируйте на него ftape.o и пометьте его SAR#3. Оставьте его открытым для записи, так как если его защитить от записи, то по какой-то причине возникают ошибки.
На Linux машине создайте каталог для работы NFS. Я создал каталог
/nfs
Запишите в него ftape.o (необрезанный, около 500+ Кб). Добавьте строку в файл /etc/exports:
/nfs msdos(ro)
Обратите внимание на то, что файлы в вашем NFS каталоге и его подкаталогах не защищены. Кто-нибудь может загрузить со своих собственных дисков Linux на MS-DOS машине и подключить этот каталог, так что не храните в нем ничего важного. Перезапустите NFS демоны rpc.mountd и rpc.nfsd. Так как они не перезапускаются по SIGHUP, просто убейте их командой kill и запустите снова. Если они не запускаются автоматически из /etc/rc.d/rc.inet2, можно включить их туда сейчас.
OK, теперь у нас все настроено для резервного копирования и восстановления. Загрузите MS-DOS машину с диска SAR#1. Затем, когда появится соответствующее приглашение, загрузите диск SAR#2. Войдите в систему root-ом и запустите /bin/tapesetup. Выйдите из системы. Если вы используете скрипты для резервного копирования, то команда netbackup теперь должна работать. Можно также воспользоваться ключом "-f msdos:/dev/ftape" команд tar, cpio, или mt. Если у вас есть программа резервного копирования, работающая только с локальными файлами, попробуйте следующее. Предположим, программа называется "localbackup" и записывает в файл, указываемый в командной строке в качестве аргумента:
После окончания копирования копирования удалите /tmp/tapepipe.
Восстановление на работающий Linux: скрипт netbackup, tar, cpio и тому подобные утилиты работают без каких-либо специальных действий со стороны оператора. Если у вас программа восстановления из локального файла, попробуйте следующее:
После окончания копирования удалите /tmp/tapepipe.
Заметьте, что я использую "rsh" для входа пользователем root на MS-DOS машину. Для этого требуется правильный .rhosts. Конфигурация на диске "tape144" позволяет выполнять rsh root-ом, но не дает зайти root-ом, с помощью telnet или rlogin - входы в систему разрешены только с консоли. Это хорошо для безопасности.
Если вам не нравится root-овый файл .rhost, то можно создать нового пользователя "tapeuser" на диске SAR#2, разрешив ему работу с ленточным накопителем, но запретив работу с дисками (создайте новую группу и включите в нее tapeuser, затем выполните команды chown и chmod для файлов /dev/rft* и /dev/nrft*). При этом ваша программа резервного копирования должна выполнять rsh на этого пользователя, а не на root. Само собой, должен существовать файл .rhost в каталоге ?tapeuser на SAR#2. Я сделал именно так.
Наконец, указания по полному восстановлению отказавшего жесткого диска. Предполагается, что раздел Linux не подлежит восстановлению. Если требуется, переформатируйте раздел, как описано в Linux Installation HOWTO. Загрузите Linux с SAR disk #1. Когда потребуется, вставьте диск #2. Далее следуйте указаниям из файла /root/notes (ранее я ссылался на него, как на /tape144/root/notes). После загрузки обеих машин запустите используемую вами команду восстановления. Если вы используете скрипты для резервного копирования, то это можно сделать так:
перейдите в каталог, в который подключается восстанавливаемый раздел жесткого диска.
если на накопителе есть подключаемые разделы, и вы хотите восстановить их, то создайте на разделе жесткого диска точки подключения (mount points) и подключите их.
При этом данные считываются с ленточного накопителя на удаленной машине и выводятся на стандартный выход, где их берет afio. Ключ "'-i"'указывает, восстанавливать файлы относительно текущего каталога (в данный момент корневой каталог восстанавливаемого раздела), "-v" - подробный вывод (список восстанавливаемых фалов), "'-Z" - указывает afio, что архив состоит из отдельно сжатых файлов, "-c 1024" - указывает использовать 5 Мб потоковый буфер для избежания излишней перемотки ленты.