Настройка резервного копирования Linux-сервера за 5 минут

    Передо мной возникла необходимость настроить резервное копирование на новом Linux-сервере, задачка эта оочень важная, но уж больно скучная: нужно написать и отладить скрипты, которые будут архивировать нужные папки (причем желательно делать инкрементальные архивы), базы данных, хранилища subversion, а затем переносить эти архивы на удаленный сервер. По этому я попробовал нагуглить готовое решение для этой задачки и в результате наткнулся на backup-manager — замечательный опенсорсный набор bash-скриптов, позволяющих:
    • архивировать любые папки, в том числе и создавать инкрементальные архивы. В конфиге просто указывается список директорий, которые должны быть скопированы, а также «черный список» файлов, которые копироваться не будут.
    • делать резервное копирование баз данных MySQL. В конфиге указываются логин и пароль mysql-юзера, имеющего доступ к базам, а всю остальную работу backup-manager делает сам.
    • делать резервное копирование svn-репозиториев, причем бэкап делается не копированием папки с хранилищем, а с помощью команды svnadmin dump.
    • шифровать архивы.
    • копировать созданные архивы на удаленные сервера по FTP, SSH или (это самая важная для меня фича) в хранилище Amazon S3, а также записывать их на DVD.

    Таким образом, один этот этот набор скриптов решил абсолютно все мои задачи, связанные с резервным копированием. Настраивается все это хозяйство не более чем за пять минут, так как в конфигурационном файле каждый параметр имеет подробные комментарии, так что проблем с настройкой возникнуть ни у кого не должно.

    Скачать можно отсюда: www.backup-manager.org/downloads, либо просто можно установить пакет backup-manager (пример для Debian):

    aptitude install backup-manager

    Кроме того, нужно учесть, что для копирования данных в хранилище Amazon S3 в системе должны быть установлены пакеты libnet-amazon-s3-perl и libfile-slurp-perl:

    aptitude install libnet-amazon-s3-perl libfile-slurp-perl

    Теперь остается только настроить запуск backup-manager по крону и можно спать спокойно.

    Upd.
    Все настройки хранятся в файле /etc/backup-manager.conf, вот основные его параметры:

    # Папка, в которой архивы будут складываться локально
    export BM_REPOSITORY_ROOT="/var/archives"

    # Используемые методы резервного копирования
    export BM_ARCHIVE_METHOD="tarball-incremental mysql svn"

    # Далее для каждого из выбранных выше методов резервного копирования задаем настройки
    # Список папок, содержимое которых будем бэкапить
    BM_TARBALL_TARGETS[0]="/etc"
    BM_TARBALL_TARGETS[1]="/boot"
    BM_TARBALL_TARGETS[2]="/var/www"
    export BM_TARBALL_TARGETS

    # Список исключений, то есть файлов в перечисленных выше папках, которые бэкапить не нужно
    export BM_TARBALL_BLACKLIST="/dev /sys /proc /tmp *imagecache*"

    # Теперь указываем как часто делать мастер-бэкап и инкрементный бэкап
    export BM_TARBALLINC_MASTERDATETYPE="weekly"
    export BM_TARBALLINC_MASTERDATEVALUE="1"

    # Для бэкапа MySQL баз данных указываем какие базы бэкапить и параметры mysql-юзера
    export BM_MYSQL_DATABASES="__ALL__"
    export BM_MYSQL_ADMINLOGIN="user"
    export BM_MYSQL_ADMINPASS="1234"

    # Для бэкапа subversion-репозитория указываем путь к хранилищу
    export BM_SVN_REPOSITORIES="/var/repositories"

    # Выбираем метод аплоада созданного бэкапа а удаленный сервер
    # (еще есть варианты ftp, ssh, ssh-gpg, rsync)
    export BM_UPLOAD_METHOD="s3"

    # Для копирования копий на Amazon S3 задаем имя корзины, access key и secret key
    export BM_UPLOAD_S3_DESTINATION="basket-name"
    export BM_UPLOAD_S3_ACCESS_KEY="ABC123"
    export BM_UPLOAD_S3_SECRET_KEY="DEF456"


    Это самые основные настройки, в самом конфиге есть еще пара десятков параметров, все они подробно прокомментированы.
    Метки:
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 43
    • +6
      Спасибо, занес на всякий случай в закладки. Но если честно, то такое интимное дело как бекап, я люблю делать сам. Что бы потом головой об стенку не биться из за какой нибудь баги :) Если уж с бекапами что то будет не так, то пусть это будет целиком и полностью моя вина. Но это исключительно MyWay :)
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          А где собственно настройка сервера? Тема ведь называется «Настройка резервного копирования Linux-севера за 5 минут». Пример в студию.
          • +1
            Все настройки хранятся в файле /etc/backup-manager.conf, вот основные его параметры:

            # Папка, в которой архивы будут складываться локально
            export BM_REPOSITORY_ROOT="/var/archives"

            # Используемые методы резервного копирования
            export BM_ARCHIVE_METHOD="tarball-incremental mysql svn"

            # Далее для каждого из выбранных выше методов резервного копирования задаем настройки
            # Список папок, содержимое которых будем бэкапить
            BM_TARBALL_TARGETS[0]="/etc"
            BM_TARBALL_TARGETS[1]="/boot"
            BM_TARBALL_TARGETS[2]="/var/www"
            export BM_TARBALL_TARGETS

            # Список исключений, то есть файлов в перечисленных выше папках, которые бэкапить не нужно
            export BM_TARBALL_BLACKLIST="/dev /sys /proc /tmp *imagecache*"

            # Теперь указываем как часто делать мастер-бэкап и инкрементный бэкап
            export BM_TARBALLINC_MASTERDATETYPE="weekly"
            export BM_TARBALLINC_MASTERDATEVALUE="1"

            # Для бэкапа MySQL баз данных указываем какие базы бэкапить и параметры mysql-юзера
            export BM_MYSQL_DATABASES="__ALL__"
            export BM_MYSQL_ADMINLOGIN="user"
            export BM_MYSQL_ADMINPASS="1234"

            # Для бэкапа subversion-репозитория указываем путь к хранилищу
            export BM_SVN_REPOSITORIES="/var/repositories"

            # Выбираем метод аплоада созданного бэкапа а удаленный сервер
            # (еще есть варианты ftp, ssh, ssh-gpg, rsync)
            export BM_UPLOAD_METHOD="s3"

            # Для копирования копий на Amazon S3 задаем имя корзины, access key и secret key
            export BM_UPLOAD_S3_DESTINATION="basket-name"
            export BM_UPLOAD_S3_ACCESS_KEY="ABC123"
            export BM_UPLOAD_S3_SECRET_KEY="DEF456"


            Это самые основные настройки, в самом конфиге есть еще пара десятков параметров, все они подробно прокомментированы.
            • 0
              Чем меньше времени потрачено на настройку, тем больше уйдёт на восстановление :)
          • +7
            «Linux-север» — пингвины освоили второй полюс? )
            • 0
              Хмм, на первый взгляд достаточно удобно и просто: выбрал что, как и куда — и оно уже там.
              • +3
                Автоматизация сбора данных для бэкапа — задача отличная, но бездумно автоматически писать бэкапы и спать спокойно можно будет только после проверки того, что забэкапилось. имхо.
                • НЛО прилетело и опубликовало эту надпись здесь
                  • +1
                    Возможно я не совсем внятно просто написал, но суть та же. Можно написать свои скрипты или взять готовые, только все это будет бесполезно, если не проверять, что эти скрипты набэкапили.
                    • 0
                      В случае если ты сам себе хостер приходится или самому писать скрипты, или искать готовое решение. Эти скрипты я протестировал и убедился в их надежности, но, разумеется, минимум раз в неделю необходимо будет проверять корректно ли делаются копии.
                  • 0
                    имхается мне что в современном мире актуальнее сервера виртуализировать и, соответственно, оставлять бэкап на совести средств виртуализации
                    • +3
                      другой вариант: github.com/astrails/safe

                      так же конфигурируется за 5 минут.

                      поддержка:
                      multiple archives of: mysql, postgresql, files (with tar), and subversion (svndump)
                      backup to: local, sftp, s3
                      + encrypt with gnupg (key or password)
                      + backup rotation

                      • +3
                        А теперь — самое главное! Есть ли у этого ПО какие-нибудь средства для того чтобы в считанные секунды после сбоя (или хотя бы минуты) восстановить из бекапа данные обратно в систему. Или опять все ручками самостоятельно искать и заливать?
                        • +1
                          Очевидно, что ответ нет. Не того это класса ПО. Но достать бэкапы и развернуть их на новом сервере можно будет за час, максимум два (это если а) есть этот самый новый сервер и б) настроены внешние системы мониторинга и падение сервера будет замечено сразу, а не через полдня). Думаю для нужд большинства разработчиков это приемлемый даунтайм. В ином случае, заботиться нужно не о резервном копировании, а о повышении отказоустойчивости системы, а это уже совсем другая задача.
                          • 0
                            Если использовать формат dar, то теоретически можно — для него есть специальные программы просмотра архивов и можно рукама или скриптом, пользуясь только dar, выбрать нужные файлы за нужную дату. Для tar — скорее всего нет.

                            Но речь о секундах или минутах может идти только при бесконечно выской ширине канала от бэкапа до сервера.
                          • 0
                            А теперь не самое главное. Как проверить, что бэкапирование идёт нормально и можно будет восстановиться из архивов?

                            И моё мнение: пользоваться можно будет, когда версия 0.7 станет stable — потому что «Since version 0.7.1, Backup Manager supports dar archives.»
                            • 0
                              Проверять только руками, а какие могут быть альтернативы?

                              И моё мнение: пользоваться можно будет, когда версия 0.7 станет stable

                              К сожалению, последняя стабильная версия не поддерживает копирование архивов на S3.
                              • +2
                                s3 вообще говоря не для всех, а вот ограничение на 2 гигабайта — это неудобно.
                            • 0
                              s3 вообще говоря не для всех

                              Спорное утверждение, на мой взгляд зарегистрировать аккаунт на Амазоне проще чем ставить где-то (в идеале в датацентре отличном от того, в котором стоит «бэкапируемый» сервер) еще одну железяку, чтобы переносить на нее данные по FTP.

                              а вот ограничение на 2 гигабайта — это неудобно

                              А где такое ограничение?
                              • 0
                                А, да, увидел:

                                Slice archives to 2 GB if using dar archives format.

                                Это же ограничение на один слайс, распилить архив можно на сколько угодно кусков.
                                • 0
                                  я неправильно выразился, точнее даже ошибочно.

                                  Основной формат для архивов — tar — не поддерживает хранение архивов в нескольких файлах, то есть архив будет большим. В 0.7.1 появилась возможность создавать архивы в формате dar — который, кроме всего прочего, позволяет разбивать архивы на маленькие фрагменты. Например, можно делать файлы архивов в размер CDROM или DVD или вообще дискеты.
                                • 0
                                  Спасибо, очень своевременная статья, хотел бекапится именно на S3 который уже используется в проекте.
                                  • +1
                                    А почему не подошел BackupPC как бэкап-сервер?

                                    Из функционала:
                                    • поддерживает Windows, Linux, Mac OS
                                    • практически не требует инсталляции на клиенте
                                    • полные и инкрементные бэкапы
                                    • идентичные файлы в разных бэкапах разных систем не дублируются
                                    • и прочие прелести...
                                    • 0
                                      а BackupPC уже научился бэкапить mysql? Ну и для него, не забываем, нужен отдельный сервер.
                                      • 0
                                        ну в принципе да: тут вот дискуссия по поводу

                                        конечно же, Backuppc (мое сугубо субъективное мнение) идеальное решения для бэкапов целого зоопарка систем как пользовательских так и серверных…
                                        • 0
                                          ну какое же он идеальное. Это решение для предприятия с быстрыми каналами. Представьте, что надо гигабайт мелких файлов передать на восстанавливаемую систему — это уже не минуты и часы будут. Или как унести его бэкап на DVD диске. Или что будет, если бэкапный сервер сам накроется. Или как его заставить писать не на локальную файловую систему, а не FTP сервер. Или не придётся ли столкнуться с проблемой миллионов файлов.

                                          Я его для windows и linux использую, конечно, но отдельностоящий сервер им бэкапить неудобно.
                                    • +1
                                      а отчеты слать в мониторинг\почту\jabber оно умеет?
                                      • 0
                                        Если при запуске оно выдает какую-то отладочную информацию, то можно в crontab'е указать MAILTO= и тогда вся эта информация будет приходить к вам на почту.
                                        • 0
                                          Тогда в почте будет много разного мусора…
                                          Лучше формировать отчет осознанно…
                                        • 0
                                          Это ж бубль-гум набор скриптов…
                                          Всегда можно впиндюрить в нужное место нужный вызов и перенаправить выхлоп через пайпер…
                                          Накидать строчек в текстовый файл, а потом скормить его консольной мыльнице или какому-нить sendxmpp…

                                        • 0
                                          А чем собственно не устраивает fsbackup для создания копий? В backup-manager очень неудобно настраивается порядок создания полной и инкрементальной копии. Полную копию можно создавать либо раз в неделю, либо раз в месяц. А если я хочу создавать каждые две недели полную копию, причем в crontab запуск будет не каждый день, а через день?

                                          Будут ли сохраняться старые копии, или по сути будет только один текущий цикл храниться?

                                          Я не увидел какого-то плюса от его использования, кроме поддержки Amazon S3

                                          • +1
                                            rsnapshot
                                            • 0
                                              Он не не устраивает, просто изначально я вообще не знал о том какие есть инструменты для решения этой задачи, по этому по запросу в гугле я нашел эту страницу и испытал перечисленные на ней утилиты на предмет работоспособности и соответствия моим требования. Кстати, насколько я понял ни fsbackup, ни rsnapshot не копируют данные на S3, а это для меня было одним из ключевых требований.
                                            • 0
                                              Подскажите, а использование встроенной в webmin возможности создания бэкапов — это хорошо или плохо?
                                              • 0
                                                О, сколько я подобных вещей перепробовал, пока не понял что быстрее самому написать все инструменты, чтобы они работали так, как тебе нужно, чем добиваться нужного функционала от готовых решений, которые заведомо не знают о твоих нюансах.

                                                А бэкап БД — вообще отдельная тема.

                                                Админы, не ленитесь писать скрипты автоматизации — это очень легко, даже если вы не программист.
                                                • 0
                                                  спасибо. актуально. особенно на s3.
                                                  • 0
                                                    rdiff-backup попробуйте :)
                                                    • +1
                                                      Сначала полез допиливать описываемое решение, но потом понял, что свой велосипед лучше :). За 10 минут набросал вот такой скриптик для бекапирования ноута. Он архивирует указанные директории, шифрует AES-ом и закидывает на Dropbox. Для десктопа самое оно:
                                                      1. #!/bin/bash
                                                      2.  
                                                      3. TARGETS="/boot /etc /root"
                                                      4. mount /boot
                                                      5.  
                                                      6. for i in $TARGETS; do
                                                      7. filename=$(echo $i | sed 's/\//-/g'); #убираем / в имени файла
                                                      8. tar -czPf /var/archives/`echo $HOSTNAME`$filename-`date +%Y%m%d`.tar.gz $i; # e.g. gbox-etc-20100314.tar.gz
                                                      9. done
                                                      10.  
                                                      11. for i in `ls /var/archives/`; do
                                                      12. gpg -e --symmetric --cipher-algo AES --batch --passphrase «Your_Password» /var/archives/$i; # шифруем
                                                      13. mv /var/archives/$i.gpg /home/allein/Dropbox/archives/; # шифрованные файлы закидуем на Dropbox
                                                      14. rm -f /var/archives/$i; # остальное удаляем
                                                      15. done
                                                      16.  
                                                      17. umount /boot

                                                      ______________________
                                                      Текст подготовлен в Хабра Редакторе от © SoftCoder.ru

                                                      Выставляем chmod и прописываем в крон.
                                                      • 0
                                                        Респект, столько интересных решений в комментах, завтра что-нибудь попробую. Сейчас есть самописный скрипт (из 2х строк, скриптом-то не назовёшь), который требует доделывания.
                                                        • 0
                                                          Авторам в голову надо вбить гвоздь.
                                                          В половине мест — пути абсолютные, в половине — относительные.
                                                          Весь ворох скриптов устанавливается посредством модного make-файла — не работающего, правда, не из-под чего, кроме линукса — но поправить системные пути из того же make-файла уже непосильная задача.

                                                          Зато — «Backup Manager 0.7.9 released», зато — «This release fixes 7 known bugs found in version 0.7.8.»

                                                          Пионерия на марше.

                                                          • 0
                                                            Скажите, а как восстанавливать данные из инкрементального бекапа?
                                                            Т.е. допустим есть мастер-бекап на воскресенье и инкрементальный на вторник, в среду всё поломалось и надо восстанавить из бекапа во вторник. Как это можно сделать?
                                                            • 0
                                                              По ссылке на backup manager выдает сайт на китайском о выращивании урожая в саду

                                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.