• Резервная копия и передача ее на удаленный сервер SSH

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

    • Сервер Источник CentOS 5 (web server)
    • Сервер Приемник FreeBSD 7.3

    Задача:

    1. Резервная копия статической папки (содержимое веб-сайта), со сжатием и оправкой архива на удаленный сервер.
    2. Резервная копия БД MySQL (того же веб-сайта), со сжатием и отправкой архива на удаленный сервер.
    3. Делать эти операции по расписанию, проверка и удаление старых резервных копий.

    Настройка соединения между сервером Источником и сервером Приемником резервных копий посредством SSH подключения без ввода пароля:

    • Авторизуемся на сервере Источнике через SSH соединение.
    • Генерируем ключ для подключения посредством SSH
    • # ssh-keygen -t rsa
    • Выберите в качестве пути ~/.ssh/id_rsa
    • Переносим любым способом ~/.ssh/id_rsa.pub на Приемник
    • Авторизуемся на сервере Приемнике через SSH соединение.
    • На сервере Приемнике выполняем команду
    • $ cat /home/user2/id_rsa.pub >> ~/.ssh/authorized_keys

    Создаем папку для хранения временных резервных копий на сервере Источнике:

    # mkdir /home/source/backup

    Настройка скрипта для создания резервной копии директории /home/source/www/ (сжатие в архив www.tgz):

    На сервере Источнике создаем файл скрипт для создания резервной копии директории /home/source/www/ (например /home/source/backup-www.sh):

    #!/bin/sh
    
    tar -cf /home/source/backup/www.tgz /home/source/www/
    

    Объяснение: /home/source/backup/www.tgz - как будет выглядеть готовый архив резервной копии папки /home/source/www/

    Настройка скрипта для создания резервной копии БД MySQL (сжатие в архив dump.sql.gz):

    На сервере Источнике создаем файл скрипт для создания резервной копии БД MySQL (например /home/source/backup-sql.sh):

    #!/bin/sh
    
    mysqldump -u authuser --password=p@ssw0rd database | gzip > /home/source/backup/dump.sql.gz

    Объяснение: Создаем резервную копию базы данных "database" и сжимаем ее в архив "dump.sql.gz". Имя пользователя и пароль явно понятны.

    На сервере Приемнике создаем папки для хранения архивов:

    $ mkdir ~/backup-www
    
    $ mkdir ~/backup-sql

    Настройка скрипта для отправки архивов www.tgz и dump.sql.gz с сервера Источника на сервер Приемник, с проверкой наличия архива старше 4 дней (например /home/source/backup-scp.sh):

    #!/bin/sh
    OLDDATE=`date --date='4 days ago' +%Y-%m-%d`;
    CURDATE=`date +%Y-%m-%d`;
    HOST="usersource@recepient.server.com";
    
    OLDFILE="~/backup-www/$OLDDATE-www.tgz";
    OLDSQLF="~/backup-sql/$OLDDATE-dump.sql.gz";
    
    if ssh $HOST test -e "$OLDFILE" ;
    then ssh $HOST "rm $OLDFILE";
    fi
    
    if ssh $HOST test -e "$OLDSQLF" ;
    then ssh $HOST "rm $OLDSQLF";
    fi
    
    scp /home/source/backup/www.tgz $HOST:~/backup-www/$CURDATE-www.tgz
    scp /home/source/backup/dump.sql.gz $HOST:~/backup-sql/$CURDATE-dump.sql.gz
    

    Настройка выполнения указанных выше скриптов (backup-www.sh, backup-sql.sh, backup-scp.sh) по расписанию:

    На сервере Источнике создаем задание cron командой:

    # crontab -e
    • Скрипт backup-www.sh будет выполняться каждый день в 2:00
    • Скрипт backup-sql.sh будет выполняться каждый день в 3:00
    • Скрипт backup-scp.sh будет выполняться каждый день в 4:00

    Как это выглядит в файле cron:

    0   2   *   *   *   /bin/sh   /home/source/bckp_www.sh
    0   3   *   *   *   /bin/sh   /home/source/bckp_sql.sh
    0   4   *   *   *   /bin/sh   /home/source/bckp_scp.sh
    

    Все готово!

    Categories: CentOS, FreeBSD, Linux

    Метки: , ,

    Добавить комментарий

    Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.