Перенос FreeBSD на другой жесткий диск.
Вопросам бекапа посвящено огромное количество статей. Но в основном они крутятся вокруг стратегии и принципов. А у меня задача банальная. Сделать бэкап и забыть о проблеме до восстановления. Но чтобы не забылось, а потом и вспомнилось - этому и посвящена эта заметка.
Исходные данные.
-
Работающий сервер. (вот-вот скоро умрет) Сервер построен на обыкновенной pc-станции, но и задачи у него только маршрутизация и прокси.
Вот с такой конфигурацией диска# df -h Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 496M 341M 115M 75% / devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1e 496M 12K 456M 0% /tmp /dev/ad0s1f 16G 5.7G 8.9G 39% /usr /dev/ad0s1d 1.2G 214M 913M 19% /var
- Пока неработающий сервер. На него и буду восстанавливать данные.
Объем жесткого диска такой же, поэтому можно не беспокоиться о нехватке места.
- Отсутвие промежуточных носителей.
- Еще в наличии handbook, как на родном языке для freebsd языке, так и на русском ( а вдруг неправильно переведу?) и естественно - manы.
Приступим.
Первым делом на резервной машинке устанавливаю FreeBsd. Все по умолчанию (GENERIC). При инсталляции указываю только настройки сетевого интерфейса. И разрешаю ssh.
Завожу пользователя. В его home каталоге будет хранится бекап старого.
А теперь сам процесс...
Что нам предлагает handbook?
# /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \ targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gzЧто ж, попробуем запустим. У... как все плохо. И дело не в целевой машине, а вот где:
DUMP: WARNING: should use -L when dumping live read-write filesystems!
Люблю такие предупреждения. Все ясно и понятно, что..., где... куда...
Еще одна странность. Почему сжатие уровня 2, по умолчанию 6? Ну и ладно, место позволяет.
Напишем скриптик
#!/bin/sh cmd="/sbin/dump -L -0uan -f -" target="slava@rezerv" # Backup usr $cmd /usr | gzip | ssh -c blowfish ${target} dd of=/home/slava/dump-usr.gz # Backup var cmd /var | gzip | ssh -c blowfish ${target} dd of=/home/slava/dump-var.gz # Backup tmp cmd /tmp | gzip | ssh -c blowfish ${target} dd of=/home/slava/dump-tmp.gz # Backup root cmd / | gzip | ssh -c blowfish ${target} dd of=/home/slava/dump-root.gz
Осталось только пароли вводить.
Через некоторе время на целевом компьютере появляются все дампы.
Теперь дело за восстановлением.
Все очень просто, напишем простой скриптик
#Restore root gunzip /home/slava/dump-rootgz | ( cd / ; restore -rf - ) #Restore tmp gunzip /home/slava/dump-tmp.gz | ( cd /tmp ; restore -rf - ) #Restore var gunzip /home/slava/dump-var.gz | ( cd /var ; restore -rf - ) #Restore usr gunzip /home/slava/dump-usr.gz | ( cd /usr ; restore -rf - )
Важно! Восстановление выполняется в тот каталог где вы запускаете restore.
ps. Старая грустная шутка делит пользователей на тех, кто резервные копии еще не делает и тех, кто уже делает.
pps. Надеюсь, что вы уже делаете.
pps. еще несколко шуток
Бэкап для слабаков — сказал коллега 3 час мучающийся с упавшим сервером :)
Бэкапы для трусов!.. говорим мы админам… но они всё равно их настраивают...