- Rsync: копирование и синхронизация файлов с удаленным сервером
- Установка и основные параметр rsync
- Rsync: локальное копирование/синхронизация каталогов
- Rsync: настройка синхронизации с удаленным сервером
- Другие примеры использования rsync
- Резервное копирование в Linux с помощью rsync
- Настройка и использование Rsync Server
- Установка и запуск
- CentOS 8
- CentOS 7
- Ubuntu
- Настройка
- Запуск клиента
- Проверка на локальном компьютере
- Проверка на удаленном компьютере
- Пример готового скрипта для синхронизации папок
- Ключи запуска rsync
- Rsync на Windows
- Запуск в качестве сервера
- Запуск клиента
- Права на папки и файлы
- Примеры использования rsync
- Возможные проблемы
- rsync: change_dir «/» failed: Permission denied
- rsync: failed to connect to x.x.x.x (x.x.x.x): No route to host (113) rsync error: error in socket IO (code 10) at clientserver.c(122)
Rsync: копирование и синхронизация файлов с удаленным сервером
Утилиту Rsync можно использовать для копирования и синхронизации файлов и папок с локального сервера Linux на удаленный и наоборот. Rsync позволяет копировать ваши данные между серверами внутри защищенного SSH соединения. Так же, rsync, поддерживает сжатие данных на лету, что повышает производительность системы.
Чтобы исключить потерю информации при отправке файлов, rsync сначала копирует всю передаваемую информацию во временный файл. Другая важная особенность rsync – файлы передаются в один поток, не создается отдельный поток для каждого файла (что вызывает проблему при передаче большого количества маленьких файлов в других утилитах).
В данной статье мы рассмотрим варианты использования rsync для синхронизации и копирования каталогов и файлов, и приведем примеры его расширенных настроек.
Установка и основные параметр rsync
Установка rsync не отличается от установки, любого другого пакета. В CentOS пакет rsync присутствует в базовом репозитории и устанавливается через yum (или dnf в CentOS 8):
# yum install rsync -y
Синтаксис команды выглядит следующим образом:
# rsync опции источник приемник
В качестве источника и приемника можно указать локальную или удаленную директорию на другом сервере.
- -v – вывести подробную информацию о процессе
- -c – проверка контрольных сумм файлов
- -q – минимальная информация
Rsync: локальное копирование/синхронизация каталогов
Rsync можно использовать для копирования файлов между локальными директориями сервера. Если вам нужно скопировать файлы из одной директории в другую, выполните команду:
# rsync /var/www/html/package.zip /var/www/tmp/
В этом случае файл package.zip был просто скопирован в директорию /var/www/tmp/.
Можно добавить несколько опций для выполнения копирования. Например, чтобы перед выполнением копирования предварительно сжать файл, вывести подробную информацию и прогресс копирования файла, выполните:
# rsync -vz —progress /var/www/html/package.zip /var/www/tmp/
Вы можете использовать rsync для синхронизации содержимого локальных каталогов. Например, rsync удобно использовать, когда вам требуется скопировать файлы из рабочей директории, на хранилище, которое примонтировано к какому-то разделу. Несколько примеров команд:
# rsync -zvr /var/www/site /backup/
Мы скопировали директорию /var/www/site в директорию для резервных копий, опция -r позволила рекурсивно скопировать все вложенные директории и файлы.
Чтобы сохранить все атрибуты файлов при копировании, например, дату изменения и дату создания файлов, добавьте ключ -a:
# rsync -zvra /var/www/site /backup/
Если вы хотите скопировать только измененные файлы, добавьте опцию -c:
# rsync -zvrac /var/www/site /backup/
Я изменил только один файл и запустил команду. В результате в целевую директорию, был скопирован только измененный файл.
Очень удобно использовать такую опцию, если файлы меняются не часто. Таким образом вы экономите время на копирование/синхронизацию директории.
Чтобы не захламлять директорию для бэкапов, можно добавить опцию —delete, это позволит сравнить файлы с источником и в случае присутствия файла в целевой директории и отсутствие его в исходной директории, удалить его автоматически. Но призываю использовать данную опцию с осторожностью, так как если вы настроите копирование директории по крону, в случае сбоя или вмешательства из вне в рабочую директорию, с последующим удалением рабочих файлов, у вас затрется информация и в бэкапах, что не позволит вам восстановить ваши данные. Пример:
# rsync -zvrac —delete /var/www/site /backup/
Rsync: настройка синхронизации с удаленным сервером
Чаще всего копирование/синхронизация rsync с удаленным сервером используется для резервного копирования или синхронизации конфигурации нод кластера. Можно выполнять автоматическую синхронизацию данных с рабочего сервера на резервный, и в случае проблем на продуктивном севере быстро все перевести на резервный. Это довольно удобный и простой в настройке вариант.
В современных версиях rsync протокол SSH используется для передачи файлов по-умолчанию. Однако вы можете использовать и демон rsyncd. Для этого клиент rsync должен быть установлен на удаленном компьютере, и его демон добавлен в автозагрузку:
# systemctl enable rsyncd
Конфигурационный файл rsync — /etc/rsyncd.conf. В этом файле можно настроить параметры rsync и настройки для синхронизации для разных ресурсов.
Для синхронизации через демона rsync адрес удаленного сервера указывается так rsync://. Например:
# rsync -av /var/www/site/package.zip rsync://192.168.1.32/backup
Чтобы скопировать файл на удаленный сервер, используйте команду:
# rsync -az /var/www/site/package.zip root@IP:/backup/
Где IP, это адрес удаленного сервера. После запуска команды, удаленный сервер запросит пароль пользователя (если включена авторизация по паролю). Для автоматической авотризации нужно настроить SSH ключи.
Скопируем директорию с локального сервера на удаленный:
# rsync -zvra /var/www/site root@IP:/backup/
То есть, все тоже самое, что и с локальными директориями, только мы указываем адрес удаленного сервера.
Так же вы можете синхронизировать файлы и с удаленного сервера на локальный, команда для этого немного изменится:
# rsync -zvra root@IP:/backup/ /backup
Для принудительного использования SSH протокола для копирования файлов, укажите это в вашей команде (для выбора транспортного протокола копирования файлов используется опция –e):
# rsync -zvrae ssh root@IP:/backup/ /backup
Если удаленный SSH сервер имеет отличный от стандартного порт, его так же можно указать:
# rsync -zvrae «ssh -p 2222» root@IP:/backup/ /backup
Другие примеры использования rsync
Если в рамках сессии синхронизации вы передаете много информации и важно ограничить скорость передачи, задайте это дополнительной опцией –bwlimit (указывается скорость в КБ/с):
# rsync -zvra —bwlimit=100 /var/www/site root@IP:/backup/
При передаче файлов на удаленный сервер, вы можете ограничить максимальный размер файлов, которые нужно скопировать. Например, вы хотите скопировать все файлы, кроме файлов размером более 1 Мб:
# rsync -zvra —max-size=’1m’ /var/www/site root@IP:/backup/
Если у вас на сервере нужна односторонняя синхронизация и после переноса файлов на удаленный сервер нужно удалить файлы с исходного сервера, воспользуйтесь опцией —-remove-source-files:
# rsync -zvra —remove-source-files —progress /var/www/site/package.zip root@IP:/backup/
После выполнения команды, файл был скопирован на удаленный сервер и удален на источнике:
Так же очень удобный опции —include и —exclude, с помощью этих опций, можно делать исключения по копированию директорий или файлов:
# rsync -zvra —exclude=administrator/ /var/www/site root@IP:/backup/
В данном случае мы исключили директорию “administrator” при копировании на удаленный сервер.
# rsync -zvra —include=’*.php’ —exclude=’*’ /var/www/site/administrator/ root@IP:/backup/
Добавлением опции —include мы смогли задать фильтр по файлам, скопировали только файлы с расширением php.
Резервное копирование в Linux с помощью rsync
В своей рабое я часть использую rsync для автоматических задач резервного копирования в Linux. Можно написать простые bash скрипты или просто добавить команду rsync в cron и выполнять по расписанию.
Например, можно добавить в cron команду:
01 30 * * * rsync -zvra root@IP:/backup/ /backup
В резульатате каждый день в 1-30 ночи, будет выполняться синхронизация каталогов локального и удаленного серверов.
Стоит учесть, что для выполнения команды rsync на удаленном сервер через cron, желательно настроить авторизацию серверов по SSH ключу. Примеры скриптов для бэкапа, мы приводили в статье «Скрипты для бэкапа файлов из Linux в облако», там как раз используется rsync для копирования файлов в подключенные облачные хранилища.
Источник
Настройка и использование Rsync Server
Утилита rsync позволяет синхронизировать содержимое двух каталогов как для локальной системы, так и удаленных серверов. Это может использоваться как для резервного копирования, так и поддержания в актуальном состоянии нод кластера.
Использование Rsync Server позволит более тонко настроить работу утилиты и оптимизировать сам процесс синхронизации.
Не стоит путать резервную копию с архивом. Если удалить важный файл, при синхронизации он также будет удален на другом устройстве. Для более корректного резервирования данных, также стоит настроить их архивирование.
Установка и запуск
По умолчанию, утилита может быть не установлена в системе. Установка и последующий запуск выполняются следующими командами.
CentOS 8
yum install rsync rsync-daemon
systemctl enable rsyncd —now
CentOS 7
yum install rsync
systemctl enable rsyncd —now
Ubuntu
apt-get install rsync
Открываем следующий файл:
Настройка
Открываем конфигурационный файл rsync:
И настраиваем его, примерно, следующим образом:
max connections = 10
exclude = lost+found/
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 *.rar *.7z *.mp3 *.jpg
[data1]
path = /data1/
comment = Public folders
read only = yes
list = yes
auth users = rsync_d1
secrets file = /etc/rsyncd.scrt
hosts allow = localhost 192.168.0.15 192.168.0.20
hosts deny = *
[data2]
uid = root
gid = root
path = /data2/
comment = Private folders
read only = yes
list = yes
auth users = rsync_d2, backup
secrets file = /etc/rsyncd.scrt
hosts allow = localhost 192.168.0.16 192.168.0.21
hosts deny = *
где первая группа параметров являются общими настройками:
- max connections — максимальное число одновременных подключений. Стоит задать, чтобы не перегружать сервер.
- exclude — папки, которые стоит исключить из синхронизации. В конкретном примере каталог для размещения восстановленных после проверки диска файлов.
- dont compress — указываем, какие файлы не нужно сжимать при отправке. Имеет смысл указать те, сжатие которых не даст результата, например, архивы, сжатые аудио и изображения.
а также каждый ресурс настраивается отдельно (в нашем примере data1 и data2):
- uid — пользователь, от которого будет выполнена синхронизация для конкретного ресурса.
- gid — группа, от которой будет выполнена синхронизация для конкретного ресурса.
- path — путь до ресурса, для которого выполняется синхронизация.
- comment — описание для удобства.
- read only — режим для чтения; позволяет защитить данные от удаления или изменения.
- list — разрешает или запрещает чтения содержимого каталога. Если запрещено (no), синхронизация может выполняться для конкретно перечисленных файлов.
- auth users — проверка подлинности, вводом логина с паролем.
- secrets file — файл, в котором размещены логин и пароль.
- hosts allow — перечисление хостов, с которых разрешено обращаться к rsync серверу.
- hosts deny — перечисление хостов, с которых запрещено обращаться к rsync серверу (в данном примере, со всех, кроме разрешенных).
Создаем файл для аутентификации:
rsync_d1:password1
rsync_d2:password2
backup:password3
* где rsync_d1:password1 — соответственно, пользователь rsync_d1 с паролем password1.
В целях безопасности, устанавливаем доступ только для владельца:
chmod 600 /etc/rsyncd.scrt
Перезапускаем сервис одной из команд:
systemctl restart rsyncd
service rsyncd restart
Добавляем порты в брандмауэр.
firewall-cmd —permanent —add-port=873/tcp
firewall-cmd —permanent —add-port=22/tcp
iptables -I INPUT 1 -p tcp —dport 873 -j ACCEPT
iptables -I INPUT 1 -p tcp —dport 22 -j ACCEPT
Запуск клиента
Проверка на локальном компьютере
Сначала выполним следующую команду на нашем сервере:
rsync -avv —progress rsync_d1@localhost::data1 /tmp/
* данная команда выполнит синхронизацию нашего ресурса data1 с каталогом /tmp.
Проверка на удаленном компьютере
Устанавливаем rsync, если еще не установлен:
yum install rsync
apt-get install rsync
* первая команда для CentOS, вторая — Ubuntu.
rsync -avv rsync_d1@192.168.0.5::data1 /tmp/
* где 192.168.0.5 — IP-адрес rsync сервера.
Пример готового скрипта для синхронизации папок
Скрипт довольно прост:
password_file=’/etc/rsyncd.scrt’
user=’opros’
ip=’192.168.0.15′
source=’data1′
destination=’/tmp/’
rsync -a —delete-after —password-file=$password_file $user@$ip::$source $destination
- password_file — пароль, в котором будет храниться пароль.
- user — учетная запись для авторизации.
- ip — IP-адрес сервера rsync.
- source — имя ресурса на сервере.
- destination — каталог, в который синхронизируем файлы.
После создаем файл с паролем:
* в данном файле указываем только пароль без имени учетной записи.
После задаем права:
chmod 600 /etc/rsyncd.scrt
Автоматизировать синхронизацию можно с помощью CRON:
0 */1 * * * /scripts/syncing.sh
* где /scripts/syncing.sh — наш скрипт. В данном примере задание будет выполняться каждый час.
Ключи запуска rsync
Список и описание опций:
Ключ | Описание |
---|---|
-v, —verbose | Вывод подробной информации о процессе синхронизации. Стоит использовать для отладки. |
-q, —quiet | Не выводит сообщения об ошибках. |
—no-motd | Не выводит приветствие в MOTD |
-c, —checksum | Сравнивать файлы по контрольной сумме, а не времени или размеру. |
-a, —archive | Режим архивирования или то же самое, что с ключами -rlptgoD (без -H,-A,-X). Используется для удобства, чтобы не перечислять много опций. |
—no- | Отключает конкретную опцию, например, вышеописанная no-motd. |
-r, —recursive | Рекурсивный режим для каталогов. |
-R, —relative | Использовать относительные пути. |
—no-implied-dirs | Выключить параметр —relative. |
-b, —backup | Режим резервного копирования. С его помощью при обновлении файлов в папке назначения для них создается копия. |
—backup-dir= | В режиме резервного копирования указывает каталог, в котором будут храниться копии. |
—suffix=SUFFIX | В режиме резервного копирования задает суффикс для сохраненных файлов. |
-u, —update | Пропускать файлы, которые новее в папке назначения (копировать только измененные файлы). |
-d, —dirs | Не использовать рекурсию для каталогов. |
-l, —links | Копировать симлинки как симлинки. |
-L, —copy-links | Копировать не симлинк а ее содержимое (трансформировать симлинк в каталог). |
-k, —copy-dirlinks | Преобразовать симлинк на каталог в обычный каталог. |
-K, —keep-dirlinks | В папке назначения обрабатывать симлинк как каталог. |
-H, —hard-links | Сохранять жесткие ссылки. |
-p, —perms | Сохранять разрешения (права доступа). |
-E, —executability | Сохранить права на исполнение. |
—chmod= | Изменить права доступа на конкретные. |
-A, —acls | Сохранить права ACL. |
-X, —xattrs | Сохранить атрибуты файлов. |
-o, —owner | Сохранить владельца (только от суперпользователя). |
-g, —group | Сохранить группу владельца. |
—devices | Копировать файлы-устройства (разрешено только при выполнении команды с правами суперпользователя). |
—copy-devices | Копировать файлы устройства как обычные файлы. |
—specials | Сохранять специальные файлы. |
-D | Заменяет —devices и —specials одновременно. |
-t, —times | Сохранять временные отметки. |
-S, —sparse | Выполнение дефрагментации в момент копирования данных. |
-n, —dry-run | Режим тестирования. Выполняется пробный запуск, при котором будет показаны изменения, но сами изменения выполнены не будут. |
-W, —whole-file | Копировать файлы целиком. По умолчанию, для копирования файлов используется алгоритм дельта-хэфера, который позволяет переносить только часть с изменениями. На практике, это сильно ускоряет процесс копирования. Ключ применяется в тех случаях, когда нужно перенести файл целиком. |
-x, —one-file-system | Не разрешает переходить границы файловой системы. Например, если в один из синхронизируемых каталогов может быть примонтирована сетевая файловая система, ее копирование может вызвать неудобства. |
-B, —block-size= | Принудительно фиксировать размер блока контрольной суммы |
-e, —rsh= | Указать оболочку для использования, например SSH. |
—existing | Не создавать новые файлы в каталоге назначения. |
—ignore-existing | Не обновлять существующие файлы в каталоге назначения. |
—remove-source-files | Источник удаляет свои файлы после выполнения синхронизации. |
—delete | Удалить файлы в папке назначения, если их больше нет в папке источнике (удаление старых файлов). |
—delete-before | Удалить файлы в папке назначения до начала синхронизации. |
—delete-during | Удалить файлы в папке назначения в момент синхронизации. |
—delete-delay | Поиск файлов на удаление в момент синхронизации, а удаление после. |
—delete-after | Удалить файлы в папке назначения после синхронизации. |
—delete-excluded | Удалить исключенные из синхронизации файлы в каталоге назначения. |
—ignore-errors | Удалять файлы даже при ошибках ввода/вывода. |
—force | Принудительное удаление не пустых каталогов. |
—max-delete= | Не удалять больше заданного числа файлов. |
—max-size= | Не передавать файлы с размером более заданного. |
—min-size= | Не передавать файлы с размером менее заданного. |
—partial | Оставлять файлы, которые переданы не до конца (процесс копирования завершился в процессе). |
—partial-dir= | Хранить частично переданные файлы в специальном каталоге. |
—timeout= | Установить время ожидания от системы ввода/вывода. |
—contimeout= | Установить время ожидания для подключения к демону rsync. |
-I, —ignore-times | Все равно копировать файлы, если они имеют одинаковые разметы или время изменения. |
—size-only | Не копировать только те файлы, которые имеют одинаковые размеры. |
-T, —temp-dir= | Все временные файлы размещать в определенном каталоге. |
-z, —compress | Сжимать данные файла во время передачи |
—compress-level= | Устанавливает уровень сжатия от 0 до 9. |
—skip-compress= | Не выполнять компрессию для перечисленных файлов. |
-C, —cvs-exclude | Исключить от копирования файлы, которые исключаются CVS (RCS/ SCCS/ CVS/ .svn/ CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo * #* .#* ,* *.old *.bak *.BAK *.orig *.rej .del-* *.a *.o *.obj *.so *.Z *.elc *.ln core) |
-f, —filter= | Добавить правило для фильтра. |
—exclude= | Исключить из синхронизации файлы, соответствующие выражению. |
—exclude-from= | Исключить из синхронизации файлы, перечисленные в файле. |
—include= | Включить в синхронизацию файлы, соответствующие выражению. |
—include-from= | Включить в синхронизацию файлы, перечисленные в файле. |
—files-from= | Читать список имен исходных файлов из файла. |
—address= | Привязать IP-адрес для исходящего сокета. |
—port= | Использовать определенный сетевой порт. |
—sockopts=OPTIONS | Использовать специальные опции для TCP. |
—blocking-io | Использовать блокирующий ввод-вывод для удаленной оболочки |
—stats | Вывод статистики по передаче данных. |
-h, —human-readable | Вывод чисел в удобном для чтения формате. |
—progress | Показывать строку прогресса для синхронизации. |
-P | То же самое, что —partial и —progress. |
-i, —itemize-changes | Выводить сводку изменений для всех обновлений |
—log-file= | Вывод лога в специальный файл. |
—password-file= | При аутентификации пароль можно хранить в специальном файле. Это необходимо для автоматизации выполнения команды без пароля. |
—list-only | Показать список файлов, но не копировать их. |
—bwlimit= | Ограничить пропускную способность (КБит в секунду). |
—protocol= | Принудительно использовать более старую версию протокола. |
—iconv= | Запрос кодировки преобразования имен файлов. |
-4, —ipv4 | Предпочтительно, использовать IPv4. |
-6, —ipv6 | Предпочтительно, использовать IPv6. |
—version | Вывод версии rsync. |
(-h) —help | Вывод справочной информации по использованию rsync. |
* самый свежий список ключей rsync можно посмотреть командой man rsync.
Rsync на Windows
Реализация rsync для Windows носит название cwRsync (не является аналогом программы — по сути, это утилита Rsync + библиотека Cygwin). Скачать ее можно на официальном сайте. Для загрузки доступны платная и бесплатная версии. Последняя не позволит поднять Rsync-сервер, получать поддержку, обновления безопасности и возможность работать в графическом интерфейсе.
Запуск в качестве сервера
Мы будем использовать бесплатную поставку для поднятия сервера. Переходим на страницу загрузки backuppc и дожидаемся скачивание архива. Создаем в корне системного диска папку, например, C:\Rsyncd, распаковываем содержимое загруженного архива в созданную папку.
Находим в корне содержимого файл rsyncd.conf и открываем его в блокноте. Добавляем следующие строки:
[data1]
path = /cygdrive/d/backup
read only = false
transfer logging = yes
[data2]
path = /cygdrive/d/Папки пользователей
read only = false
transfer logging = yes
strict modes = false
auth users = home
secrets file = /cygdrive/c/Rsyncd/rsyncd.secrets
* в данном примере мы создали группы настроек data1 для папки D:\backup и data2 для D:\Папки пользователей. Регистр важен! Для второй папке для синхронизации требуется аутентификация.
* синтаксис для настройки аналогичен описанному выше для Linux. Только пути пишутся, начиная с /cygdrive/ .
Регистрируем rsync в качестве службы — для этого открываем командную строку от администратора и выполняем команду:
c:\rsyncd\bin\cygrunsrv -I «RsyncServer» -p /cygdrive/c/rsyncd/bin/rsync.exe -a «—config=/cygdrive/c/rsyncd/rsyncd.conf —daemon —no-detach» -o -t auto -e «CYGWIN=nontsec binmode» -1 /cygdrive/c/rsyncd/rsyncd-stdin.log -2 /cygdrive/c/rsyncd/rsyncd-stderr.log -y tcpip -f «Rsync service»
* где c:\rsyncd или /cygdrive/c/rsyncd — каталог, куда мы распаковали скачанный архив.
Теперь открываем службы Windows, и находим зарегистрированную службу RsyncServer. Кликаем по ней правой кнопкой и выбираем Запустить:
Пробуем выполнить локальную синхронизацию. В командной строке переходим в каталог установки rsync:
rsync.exe -avv —progress 127.0.0.1::data1 /cygdrive/c/Temp
* данная команда синхронизирует содержимое модуля data1 (в нашей настройке это папка D:\backup) в папку C:\Temp (если ее нет, нужно создать перед выполнением команды).
Или в обратном направлении:
rsync.exe -avv —progress /cygdrive/c/Temp 127.0.0.1::data1
Запуск клиента
Процедура использования клиента cwRsync аналогична описанному выше для Linux. Скачиваем архив программы и распаковываем его. Запускаем командную строку и переходим в каталог bin (находится в папке, куда была распакована программа).
rsync.exe -avv —progress admin@192.168.0.15::data1 /cygdrive/c/temp
* обратите внимание на путь назначения — чтобы обратиться к диску C мы написали /cygdrive/c. Итоговое назначение — C:\temp.
Копирование с помощью SSH:
rsync.exe -avv -e «./ssh -p 22» —progress admin@192.168.0.15:/data/ /cygdrive/c/temp
* обратите внимание, что мы пишем не ssh, а ./ssh, иначе, если мы используем 64-х битную систему и бесплатный пакет cwRsync, система не найдет путь до ssh и выдаст ошибку Failed to exec ssh: No such file or directory.
Права на папки и файлы
Rsync в Windows не умеет копировать права для файлов и папок. В результате, мы получим либо копию с неправильными ACL-правами, либо они будут назначены неправильно (права будут выданы по хаотичному алгоритму). Чтобы решить данную проблему после клонирования, можно воспользоваться утилитой robocopy — она входит в состав Windows, начиная с 7-ки.
Команда, которая позволит выполнить исправление прав:
robocopy c:\test d:\backup /MIR /SEC /SECFIX
* в данном примере мы возьмем папку c:\test в качестве источника и отзеркалируем его d:\backup. Ранее скопированные данные не будут копироваться вновь, но будут исправлены права.
Примеры использования rsync
Простая команда для синхронизации двух каталогов:
rsync -a —delete-after user@192.168.0.15::data_source /data_destination
Команда для резервного копирования:
rsync -ab —delete-after user@192.168.0.15::data_source /data_destination
Выполнение синхронизации по SSH:
rsync -a —delete-after -e «ssh -p 22» user@192.168.0.15:/data_source /data_destination
* по SSH запросы идут не через rsync server. В данном примере подключение будет выполнено по 22 порту, под учетной записью user.
Копирование файлов на удаленную машину:
rsync -a —delete-after /data_destination user@192.168.0.15::data_source
Синхронизация в обе стороны (запускаем две команды по очереди):
rsync -a —delete-after user@192.168.0.15::data_source /data_destination
rsync -a —delete-after /data_destination user@192.168.0.15::data_source
Синхронизация файлов по маске:
rsync -a —include=’*.txt’ —exclude=’*’ user@192.168.0.15::data_source /data_destination
* в этом примере будут синхронизированы только файлы с расширением txt.
rsync -a —exclude=’folder/*’ user@192.168.0.15::data_source /data_destination
Возможные проблемы
rsync: change_dir «/» failed: Permission denied
Причина: нет прав на синхронизируемые файлы.
Решение: задать правильного пользователя (uid) в настройках ресурса на стороне сервера.
rsync: failed to connect to x.x.x.x (x.x.x.x): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(122)
Причина: не доступен удаленный хост.
Решение: проверить, что хости доступен по сети. Проверить настройку брандмауэра.
Источник