Rsync - конфигурируем бэкапы просто

Написал PHP-инструмент для легкого конфигурирования Rsync-бэкапов и решил рассказать Вам о нем.

Действия на Slave-сервере

Slave-сервер - то куда будет отправляться бэкап (место хранения бэкапа). Конечно мы должны настроить то место, где у нас будут храниться бэкапы, давайте сделаем это.

1. Подключитесь по SSH к Slave-серверу:

ssh root@slave.ru

2. Установите rsync

apt-get install rsync

2. Создайте группу rsync, пользователя rsync и его домашнюю директорию:

groupadd rsync
useradd -g rsync -s /bin/bash -p Pa$$word -d /home/rsync -m rsync
passwd rsync

3. Авторизуйтесь под пользователем rsync и войдите в его домашнюю директорию:

cd /home/rsync

4. Создайте следующие директории и выставите им права доступа:

chmod 700 list
chmod 700 files/backup
chmod 700 files/changes

5. Не обязательно, но желательно добавить в файл .ssh/known_hosts публичный ключ пользователя Master-сервера (того пользователя, которым будете подключиться к Slave-серверу)

Действия на Master-сервере

Master-сервер - место, где хранится оригинал (который нужно бэкапить)

1. Установите rsync

apt-get install rsync

2. В директории с PHP-инструментом создайте файл run.php с приблизительно таким содержимым

<?php
error_reporting(E_ERROR | E_PARSE | E_COMPILE_ERROR);

include('my.php');

// укажим директорию (на Slave-сервере), в которой будем хранить актуальный бэкап
my::rsync()->setBackupDir('/home/rsync/files/backup/');

// укажим директорию (на Slave-сервере), в которой будут храниться изменения в бэкапе
my::rsync()->setChangesDir('/home/rsync/files/changes/');

// добавим директорию которую нужно бэкапить и внутреннюю директорию, которую не нужно бэкапить
my::rsync()->path('/my/dir/')->exclude('data/www/site.ru/cache/*');

// добавим директорию которую нужно бэкапить, исключая внутреннюю кэш директорию и файлы имена которых заканчиваются на log
my::rsync()->path('/var/www/yapro/')->exclude('*/cache/*')->exclude('*log');

// добавим для всех бэкапов внутренние директории(пути), которые не нужно бэкапить
my::rsync()->excludeForAll('data/logs/*');
my::rsync()->excludeForAll('data/email/*');
my::rsync()->excludeForAll('*.git');

// так же нужно указать адрес подключения по ssh к Slave-серверу и если необходимо, то укажите порт подключения:
my::rsync()->setSsh('rsync@slave.ru')->setSshPort(23)

// сохраним наши настройки
my::rsync()->save();

3. Выполните этот файл

php run.php

в результате в файл run пропишутся команды выполняющие бэкап.

4. Для проверки запустим в консоле шел-скрипт:

/bin/sh run

если возникли проблемы, то смотрите в файл log (он лежит рядом с файлом run).

5. Если ошибок не возникло, то советую добавить в крон эту команду, для выполнения раз в день.

p.s. после того, как все заработало, разумно удалять старые изменения в бэкап директории changes, поэтому на Slave-сервере кроном каждый час выполняйте PHP-скрипт:

/usr/local/bin/php /home/rsync/delete_old_changes.php

а сам скрипт выглядит так:

<?php
error_reporting(E_ERROR | E_PARSE | E_COMPILE_ERROR);

ob_start();
@passthru('rm -fr /root/Rsync/files/changes/'.date('Y/n/j/G', (time()-259200) ));// 3 дня бэкапа
$command_str = ob_get_contents();
ob_end_clean();

ob_start();
@passthru('rm -fr /root/Rsync/files/changes/'.date('Y/n/j', (time()-345600) ));// 4 дня бэкапа
$command_str .= ob_get_contents();
ob_end_clean();

echo $command_str;

убедитесь что файлу /home/rsync/delete_old_changes.php выставлены права 0700

Источники: 1

Оцени публикацию:
  • 0,0
Оценили человек: 0

Похожие статьи:


Комментарии посетителей:
  • Если у Вас FreeBSD, то в файле run.php замените это:
    RSYNCBIN=`which rsync`
    на это:
    set RSYNCBIN=/usr/local/bin/rsync
    затем это:
    CHANGES_DIR=
    на это:
    set CHANGES_DIR=
    и это:
    export RSYNC_RSH="ssh -c arcfour -o Compression=no -x"
    на это:
    setenv RSYNC_RSH  "ssh -c arcfour -o Compression=no -x"
    и теперь снова выполните:
    php run.php
    и затем:
    /bin/csh run
    02 июня 2014, 14:33 коммент полезен : 0 # Admin
Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » Unix »