понедельник, 30 марта 2009 г.

Как сделать бекап системы на лету

Часто очень удобно делать бекап на какой-нибудь сервер в сети. SSH в сумме с такими средствами бекапа как dump/restore или dd предоставляет для этого хорошие возможности.

На самом деле, все просто. Достаточно взглянуть на команды. Вот backup с помощью dump/restore:

ssh alexey@192.168.0.1 'sudo dump -af- /dev/hda2' | dd of=hda.dump

Восстанавливается потом командой:

restore -rf hda.dump

А вот сразу с восстановлением:

ssh alexey@192.168.0.1 'sudo dump -af- /dev/hda2' | restore -rf-

а это с помощью dd:

ssh alexey@192.168.0.1 'sudo dd if=/dev/hda2' | dd of=backup.img

5 комментариев:

  1. По-моему такой способ не очень хорошо будет работать на рабочей системе, ведь он берёт данные с диска напрямую по байтам, а пока он читает, например, вторую половину, в первой уже может что-то поменяться, в итоге при восстановлении вылезут ошибки. А также линух кеширует в памяти операции записи, так что программа уже записала что-либо, а на диске этих данных не появилось или появилось только наполовину... Вобщем будет больше проблем чем счастья ;)
    Так что такой способ можно применять только на отмонтированном диске!

    ОтветитьУдалить
  2. Murz, я этот метод, в основном, на телекомовских серваках применял, которые роутингом занимаются. Так там ничего особо не меняется за время бекапа.
    Можно и отмонтированные диски так бекапить. Почему нет?

    ОтветитьУдалить
  3. На серваках, которые не ведут активную запись на диск - да, можно применять, но в статье об этом не сказано.
    А если на сервере стоит apache с рабочими сайтами, то там каждую секунду что-то пишется в логи, например. Да и стандартные демоны тоже в логи любят периодически писать и если этот момент совпадёт с бекапом, то всё порушится.
    А люди почитают эту статью и начнут применять такой способ бекапа везде, а потом огребут кучу проблем. Поэтому я и решил написать предупреждение об этом...

    ОтветитьУдалить
  4. Ну в статье также не сказано, что орехи колоть серверами лучше не надо :-))
    Согласен, конечно, с замечаниями, тем более, что разработчики dump/restore сами не советуют на примонтированном разделе пользоваться утилитой.
    На практике пока у меня ни разу с этим методом сбоев не было (раз 20 точно пользовался).

    ОтветитьУдалить
  5. Бекап он на то и бекап чтобы давать 100% гарантию сохранности результатов, а то будет очень печально что 99 раз бекап был нормальный, а сотый бекап, когда вдруг всё слетело и стало нужно срочно восстановить, окажется порушенным, а так обычно и бывает по закону подлости ;) С файлами mysql-таблиц в innodb, например, при таком способе бекапа точно будут проблемы в случае если бекап делается со включенным mysql-сервером.
    Поэтому лучше всё же бекапить не как проще, а как надёжнее.
    Я, например, бекаплю файлы и базу через backup-manager - http://www2.backup-manager.org/ - она бекапит сами файлы и при необходимости можно восстановить из бекапа только 1 файл или папку.

    Ну, конешно, для каждого случая свои методы хороши, поэтому твой метод тоже применим, например на телекомовских серверах ;)

    ОтветитьУдалить