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

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

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

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