Статья
Версия для печати
Обсудить на форуме
Резервное копирование. Перенос FreeBSD на другой жесткий диск.


Автор: Sla
Первоисточник: http://slasoft.kharkov.ua/article/backup


Вопросам бекапа посвящено огромное количество статей. Но в основном они крутятся вокруг стратегии и принципов. А у меня задача банальная — сделать бэкап и забыть о проблеме до восстановления. Но чтобы не забылось, а потом и вспомнилось — этому и посвящена эта заметка.

Исходные данные.

1. Работающий сервер (вот-вот скоро умрет). Сервер построен на обыкновенной 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

2. Пока неработающий сервер. На него и буду восстанавливать данные. Объем жесткого диска такой же, поэтому можно не беспокоиться о нехватке места.
3. Отсутствие промежуточных носителей.
4. Еще в наличии 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: Надеюсь, что вы уже делаете.

PPPS: Еще несколько шуток:

«Бэкап для слабаков», — сказал коллега, 3 час мучающийся с упавшим сервером. :)

«Бэкапы для трусов!» — говорим мы админам, но они всё равно их настраивают...
Версия для печати
Обсудить на форуме