Перенос FreeBSD на другой жесткий диск.

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

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

  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. Надеюсь, что вы уже делаете.


pps. еще несколко шуток

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

Бэкапы для трусов!.. говорим мы админам… но они всё равно их настраивают...