Автор:
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 час мучающийся с упавшим сервером. :)
«Бэкапы для трусов!» — говорим мы админам, но они всё равно их настраивают...