- Использование Rsync для синхронизации локального и удаленного каталогов на VPS
- Вступление
- Что такое Rsync?
- Основной синтаксис
- Использование Rsync для синхронизации с удаленной системой
- Полезные опции 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 для синхронизации локального и удаленного каталогов на VPS
Вступление
Rsync расшифровывается как «remote sync» (удаленная синхронизация) и является инструментом удаленной синхронизации локального и удаленного файлов. Он использует алгоритм, который минимизирует объем копируемых данных при помощи перемещения только тех частей файлов, которые были изменены.
Данное руководство описывает основное использование этой мощной утилиты. В примерах был использован сервер Ubuntu 12.04, но можно использовать любой современный дистрибутив Linux.
Что такое Rsync?
Rsync является очень гибким инструментом синхронизации, рассчитанным на работу в сетевой среде. Сетевой протокол, разработанный для использования данного инструмента, также называется Rsync.
Данное руководство в основном ссылается на rsync как на утилиту, а не на протокол.
Благодаря вездесущности данной утилиты на Linux и Unix-подобных системах и ее популярности как инструмента для сценариев системы, она включена в большинство дистрибутивов Linux по умолчанию.
Основной синтаксис
Основной синтаксис Rsync очень прост, его функционирование похоже на SSH, SCP и СР.
Чтобы создать два пробных каталога и несколько пробных файлов, используйте следующую команду:
mkdir dir1
mkdir dir2
touch dir1/file
Это создаст на сервере каталог под названием dir1, содержащий 100 пустых файлов.
ls dir1
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
Также был создан пустой каталог dir2.
Чтобы синхронизировать содержимое каталогов dir1 to dir2 на одной системе, введите:
rsync -r dir1/ dir2
Флаг «-r» значит «рекурсивный», что необходимо для синхронизации каталогов.
Вместо него можно использовать флаг «-а»:
rsync -a dir1/ dir2
«-a» является комбинированным флагом.
Он означает «архив» и синхронизирует рекурсивно, сохраняя символьные ссылки, специальные файлы и файлы устройств, время изменения, группу, владельца и разрешения.
Он удобнее и потому используется чаще, чем «-r».
Важное примечание
В конце первого аргумента вышеприведенных команд используется конечная косая, или слеш (/):
rsync -a dir1/ dir2
Слеш необходим для обозначения «содержимого dir1».
Альтернативный вариант без использования конечной косой, поместит dir1, включая каталог, в dir2. Это создало бы иерархию, которая выглядит так:
Всегда проверяйте аргументы дважды перед выполнением команды Rsync.
Rsync позволяет это сделать при помощи команд -n или –dry-run. Флаг -v (что значит «подробно») также необходим для получения адекватного результата:
rsync -anv dir1/ dir2
sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .
Сравните данный результат с результатом, выведенным при снятии слеша:
rsync -anv dir1 dir2
sending incremental file list
dir1/
dir1/file1
dir1/file10
dir1/file100
dir1/file11
dir1/file12
dir1/file13
dir1/file14
dir1/file15
dir1/file16
dir1/file17
dir1/file18
. . .
Здесь можно увидеть, что сам каталог был перенесен.
Использование Rsync для синхронизации с удаленной системой
Синхронизация с удаленной системой проста, если есть SSH-доступ к удаленному компьютеру и на обеих системах установлена Rsync. Если вам нужно настроить ключи SSH, нажмите здесь.
Установив и проверив доступ SSH между двумя машинами, можно синхронизировать папку dir1 с удаленным компьютером при помощи следующего синтаксиса (обратите внимание, что в данном случае нужно передать непосредственно саму папку, поэтому косую черту следует опустить):
Данная процедура называется «push», так как она «толкает» каталог из локальной системы на удаленную.
Противоположная ей операция зовется «извлечением» («pull»). Она используется для синхронизации удаленного каталога с локальной системой. Если бы dir1 находился не на локальной, а на удаленной системе, синтаксис выглядел бы так:
rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine
Как в «ср» и подобных инструментах, первый аргумент всегда указывает на источник, а второй – на назначение.
Полезные опции Rsync
Rsync предоставляет множество команд для изменения стандартного поведения утилиты. Некоторые из наиболее необходимых флагов уже рассматривались.
При передаче еще не сжатых файлов, таких как текстовые файлы, можно уменьшить сетевой трафик, сжимая файлы при помощи параметра -z:
rsync -az source destination
Флаг «-P» также очень полезен. Он совмещает флаги «–progress» и «–partial». Первый выводит индикатор выполнения передачи, а второй позволяет возобновить прерванную передачу:
rsync -azP source destination
sending incremental file list
./
file1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101)
file100
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=97/101)
file11
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=96/101)
. . .
Если запустить команду снова, будет выведен более короткий результат, потому что никакие изменения не были внесены.
Это иллюстрирует способность rsync использовать время последнего изменения, чтобы определить, были ли внесены изменения в файлы.
rsync -azP source destination
sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00
Если обновить время последнего изменения некоторых файлов, можно увидеть, что rsync повторно копирует только измененные файлы:
touch dir1/file<1..10>
rsync -azP source destination
sending incremental file list
file1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101)
file2
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=87/101)
file3
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=76/101)
. . .
По умолчанию, Rsync ничего не удаляет из каталога назначения. Следовательно, необходимо удалить файлы из каталога назначения, если они удаляются из исходного каталога, чтобы сохранить полную синхронизацию каталогов.
Такое поведение можно изменить с помощью флага «–delete». Прежде чем применять данный флаг, используйте команду «–dry-run» и проведите тестирование, чтобы предотвратить потерю данных.
rsync -a —delete source destination
При необходимости исключить некоторые файлы или каталоги, расположенные в синхронизируемом каталоге, можно внести их в разделенный запятыми список при помощи команды «–exclude=»:
rsync -a —exclude=pattern_to_exclude source destination
Если шаблон исключений был определен, при помощи команды «–include=» исключение можно снять, установив другой шаблон:
rsync -a —exclude=pattern_to_exclude —include=pattern_to_include source destination
Выводы
Rsync может упростить передачу файлов по сетевым соединениям и повысить устойчивость локальной синхронизации каталогов. Гибкость данной утилиты делает ее хорошим инструментом для выполнения различных операций на уровне файлов.
Владение 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)
Причина: не доступен удаленный хост.
Решение: проверить, что хости доступен по сети. Проверить настройку брандмауэра.