Установка и использование rsync в Linux

rsync (Remote Synchronization) — программа выполняющая синхронизацию файлов и каталогов.

Пример команды установки для CentOS:

sudo yum -y install rsync

Для Debian/Ubuntu:

sudo aptitude install rsync

Приведу пример локальной синхронизации:

sudo rsync -avh --delete /var/www/ /root/backup/www/

Синхронизация данных на удаленный сервер:

sudo rsync -avh --delete /var/www/ root@192.168.1.50:/root/backup/www/

Синхронизация данных на локальный сервер с удаленного:

sudo rsync -avh root@192.168.1.50:/var/www/ /root/backup/www/

Через SSH с нестандартным портом:

sudo rsync -avh -e "ssh -p 1111" root@192.168.1.50:/var/www/ /root/backup/www/

Чтобы исключить какие нибудь поддиректории, например если мы синхронизируем /var/www/ и хотим исключить /var/www/dir/ и /var/www/dir/tmp/, то можно добавить к команде:

--exclude='dir/' --exclude='dir/tmp/'

Исключения файлов по маске, например ixnfo.com.log и т.д.:

--exclude='ixnfo.com*'

Чтобы переместить файлы с удаленного сервера на локальный:

sudo rsync -avh --remove-source-files root@192.168.1.50:/var/www/ /var/www/

Пример копирования MySQL данных на другой диск:

rsync -vrplogDtH –progress /var/lib/mysql/ /newhdd/var/lib/mysql/

Приведу пример своего скрипта резервного копирования (последняя строка удаляет директории старше 30 дней):

#!/bin/bash
mkdir /root/backup/`date +%Y-%m-%d`
cd /root/backup/`date +%Y-%m-%d`
sudo rsync -avh -e "ssh -p 1111" --log-file=/root/backup/`date +%Y-%m-%d`/rsync.log root@192.168.1.50:/var/www/* /root/backup/`date +%Y-%m-%d`/
find /root/backup -type d -mtime +30 | xargs rm -f -r

Встроенную справку можно получить командой:

man rsync

В файле /etc/default/rsync можно настроить запуск rsync как демона.
При синхронизации с другими серверами на них тоже должен быть установлен rsync либо нужно указывать SSH.

Опишу возможные параметры запуска:
-v (—verbose, подробный режим)
-r (—recursive, копировать данные рекурсивно)
-R (—relative, использовать относительные пути при создании символических ссылок)
-a (—archive, режим архивирования, копировать данные рекурсивно с сохранением симлинков, прав доступа и прочей информации)
-b (—backup, создание резервной копии, смотрите дополнительно —backup-dir=DIR и —suffix=SUFFIX)
-c (—checksum, сверка по контрольным суммам, а не по времени изменения и размеру)
—delete (удаление файлов)
-f (—filter=RULE, создание правила фильтрования)
-h (—human-readable, вывод данных в понятном для человека формате, смотрите также —progress)
-H (—hard-links, сохранение жестких ссылок)
-n (—dry-run, пробный режим без каких либо изменений)
-p (—perms, сохранение прав)
-z (—compress, сжатие данных при передаче, смотрите также —compress-level=NUM и —skip-compress=LIST)
-x (—one-file-system, не выходить за пределы текущей точки монтирования)
-q (—quiet, краткий режим)
-W (—whole-file, полное копирование вместо копирования изменившихся данных)

Как настроить подключение по SSH без ввода пароля смотрите в моей статье:
Подключение к SSH с использованием ключей

Если есть проблемы при подключении по SSH с использованием ключа, то в крайнем случае можно указать пароль вручную, например с помощью sshpass:

apt install sshpass
sshpass -p "password" rsync ...

Оставьте комментарий

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