Как настроить rsync linux

Содержание
  1. Команда Rsync в Linux с примерами
  2. Установка Rsync
  3. Установите Rsync в Ubuntu и Debian
  4. Установите Rsync на CentOS и Fedora
  5. Синтаксис команды Rsync
  6. Базовое использование Rsync
  7. Использование rsync для синхронизации данных с / на удаленную машину
  8. Исключить файлы и каталоги
  9. Выводы
  10. БЭКАПЛЕНД — РЕЗЕРВНОЕ КОПИРОВАНИЕ ДЛЯ ВСЕХ!
  11. Как установить и настроить Rsync
  12. Проверка:
  13. Установка:
  14. Настройка:
  15. Описание полей файла конфигурации rsyncd.conf
  16. Настройка и использование Rsync Server
  17. Установка и запуск
  18. CentOS 8
  19. CentOS 7
  20. Ubuntu
  21. Настройка
  22. Запуск клиента
  23. Проверка на локальном компьютере
  24. Проверка на удаленном компьютере
  25. Пример готового скрипта для синхронизации папок
  26. Ключи запуска rsync
  27. Rsync на Windows
  28. Запуск в качестве сервера
  29. Запуск клиента
  30. Права на папки и файлы
  31. Примеры использования rsync
  32. Возможные проблемы
  33. rsync: change_dir «/» failed: Permission denied
  34. 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 в Linux с примерами

rsync — это быстрая и универсальная утилита командной строки для синхронизации файлов и каталогов между двумя местоположениями через удаленную оболочку или с / на удаленный демон Rsync. Он обеспечивает быструю инкрементную передачу файлов, передавая только различия между источником и местом назначения.

Rsync можно использовать для зеркального отображения данных, инкрементного резервного копирования, копирования файлов между системами, а также в качестве замены команд scp , sftp и cp .

В этой статье объясняется, как использовать rsync на практических примерах и подробных объяснениях наиболее распространенных параметров rsync .

Установка Rsync

Утилита rsync предустановлена в большинстве дистрибутивов Linux и macOS. Если в вашей системе не установлен rsync , вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.

Установите Rsync в Ubuntu и Debian

Установите Rsync на CentOS и Fedora

Синтаксис команды Rsync

Прежде чем перейти к использованию команды rsync , давайте начнем с обзора основного синтаксиса.

Выражения утилиты rsync имеют следующую форму:

  • OPTION — параметры rsync .
  • SRC — Исходный каталог.
  • DEST — целевой каталог.
  • USER — удаленное имя пользователя.
  • HOST — удаленное имя хоста или IP-адрес.

rsync предоставляет ряд параметров, управляющих поведением команды. Наиболее широко используемые варианты:

  • -a , —archive , режим архива, эквивалент -rlptgoD . Этот параметр указывает rsync рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства, сохранять символические ссылки, время модификации, группы, владение и разрешения.
  • -z , —compress . Эта опция заставляет rsync сжимать данные при их отправке на конечный компьютер. Используйте эту опцию, только если подключение к удаленному компьютеру медленное.
  • -P , что эквивалентно —partial —progress . Когда используется эта опция, rsync показывает индикатор выполнения во время передачи и сохраняет частично переданные файлы. Это полезно при передаче больших файлов по медленным или нестабильным сетевым соединениям.
  • —delete . Когда используется эта опция, rsync удаляет посторонние файлы из места назначения. Это полезно для зеркалирования.
  • -q , —quiet . Используйте эту опцию, если вы хотите подавить сообщения, не связанные с ошибками.
  • -e . Эта опция позволяет вам выбрать другую удаленную оболочку. По умолчанию rsync настроен на использование ssh.

Базовое использование Rsync

Самый простой вариант использования rsync — это копирование одного файла из одного в другое локальное расположение. Вот пример:

Пользователь, выполняющий команду, должен иметь разрешения на чтение в исходном местоположении и разрешения на запись в месте назначения.

Если пропустить имя файла из места назначения, файл будет скопирован с текущим именем. Если вы хотите сохранить файл под другим именем, укажите новое имя в целевой части:

Настоящая мощь rsync проявляется в синхронизации каталогов. В приведенном ниже примере показано, как создать локальную резервную копию файлов веб-сайта:

Если целевой каталог не существует, rsync создаст его.

Стоит отметить, что rsync разному обрабатывает исходные каталоги с помощью завершающей косой черты ( / ). Если исходный каталог имеет косую черту в конце, команда скопирует только содержимое каталога в целевой каталог. Если косая черта в конце опущена, rsync копирует исходный каталог в целевой каталог.

Использование rsync для синхронизации данных с / на удаленную машину

При использовании rsync для удаленной передачи данных его необходимо установить как на исходном, так и на целевом компьютере. Новые версии rsync настроены на использование SSH в качестве удаленной оболочки по умолчанию.

В следующем примере мы переносим каталог с локального компьютера на удаленный:

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

Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, укажите порт с помощью параметра -e :

При передаче больших объемов данных рекомендуется запускать команду rsync внутри сеанса экрана или использовать параметр -P :

Исключить файлы и каталоги

Есть два варианта исключения файлов и каталогов. Первый вариант — использовать аргумент —exclude и указать файлы и каталоги, которые вы хотите исключить, в командной строке.

При исключении файлов или каталогов необходимо использовать их относительные пути к исходному местоположению.

В следующем примере показано, как исключить node_modules и tmp :

Второй вариант — использовать параметр —exclude-from и указать файлы и каталоги, которые вы хотите исключить из файла.

Выводы

Мы показали вам, как использовать Rsync для копирования и синхронизации файлов и каталогов. Еще больше информации о Rsync можно найти на странице руководства пользователя Rsync .

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Источник

БЭКАПЛЕНД — РЕЗЕРВНОЕ КОПИРОВАНИЕ ДЛЯ ВСЕХ!

Как установить и настроить Rsync

Wiki : Rsync (англ. Remote Synchronization) — программа для UNIX-подобных систем, которая выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодирование данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то, что зеркалирование осуществляется одним потоком в каждом направлении (а не по одному или несколько потоков на каждый файл). rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию.

Rsync является общепризнанным программным обеспечением, которое работает надежно и быстро. Бэкапленд использует его для оптимального механизма создания резервных копий, а так же по причине его массовой распространенности на серверах, что означает, что вы сможете работать с нашей системой без каких-либо настроек на вашей стороне. Но из каждого правила существуют исключения, поэтому ниже мы предлагаем подробную инструкцию как установить и настроить Rsync на серверах с операционными системами Debian, Ubuntu, Centos и FreeBSD.

Проверка:

Проверьте установлен ли rsync:

выполните команду в ssh: whereis rsync если ответом будет /usr/local/bin/rsync или /usr/bin/rsync то rsync у вас есть, вам его устанавливать не нужно.

Так же можете проверить, просто запустив команду в ssh: rsync или /usr/local/bin/rsync или /usr/bin/rsync если будет ответ, а не ошибка, тогда вам его устанавливать не нужно.

Читайте также:  Проверка контрольных сумм astra linux

Установка:

Описанные далее установка и настройка rsync возможны, только если у Вас есть права root. Если таких прав нет, напишите Вашему системному администратору или в техническую поддержку хостинга с просьбой установить rsync.

Для FreeBSD: cd /usr/ports/net/rsync
make install

Для Linux Debian и Ubuntu: apt-get install rsync

Для Centos: yum install -y rsync

Настройка:

Настраивать rsync нужно только в одном случае, если Вы хотите, чтобы наша система создавала резервные копии не через SSH, а через демон rsyncd.

Через файл конфигурации настройки rsyncd вы можете:

  • Задать своего пользователя и пароль
  • Разрешить вход к вам только с определенного IP/хоста (наш хост при заказе мы вам высылаем)
  • Разрешить доступ к конкретным директориям и файлам на вашей системе

Настройка rsync для FreeBSD: cd /usr/local/etc/

cоздаем файл приветствия (не обязательно) echo «Hello from rsync server» > rsyncd.motd
echo «Server Adress: My SuperHost 1.1.1.1» >> rsyncd.motd

создаем файл c именем пользователя и паролем echo «backup:ПАРОЛЬ» > rsyncd.scrt
chmod 0600 /usr/local/etc/rsyncd.scrt

где ПАРОЛЬ тот, что мы выдаем вам при создании в панели управления задания на резервное копирование. В дальнейшем вы можете изменить пароль на свой в файле rsyncd.scrt и на сервере хранения резервных копий в файле /var/www/rc-******/data/rsyncd.pass, где rc-****** ваш логин на сервер с бэкапами.

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

Далее создаем основной конфиг rsyncd.conf

1) cd /usr/local/etc/

2) mv rsyncd.conf rsync.original

3)
cat > /usr/local/etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
motd file = /usr/local/etc/rsyncd.motd

uid = root
gid = wheel
max connection = 4

auth users = backup
secrets file = /usr/local/etc/rsyncd.scrt

[root]
path = /
read only = yes
host allow = ssh.bkp177.backupland.com
EOF

4) /usr/local/etc/rc.d/rsyncd restart

Теперь настраиваем так, чтобы после перезагрузки сервера у вас запускался демон rsyncd

Делаем отступ с переносом на следующую строку echo «» >> /etc/rc.conf

Добавлем разрешение запускать при старте echo ‘rsyncd_enable=»YES»‘ >> /etc/rc.conf

Настройка rsync для Linux Debian и Ubuntu:

Находите файл /etc/default/rsync
В нем находите строку:
RSYNC_ENABLE=false
и меняете на:
RSYNC_ENABLE=true

Таким образом мы разрешаем при загрузке сервера запустить демон rsyncd

Далее создадим папку для наших файлов: mkdir /etc/rsync/
cd /etc/rsync/

создаем файл приветствия (не обязательно) echo «Hello from rsync server» > rsyncd.motd
echo «Server Adress: My SuperHost 1.1.1.1» >> rsyncd.motd

создаем файл c именем пользователя и паролем echo «backup:ПАРОЛЬ» > rsyncd.scrt
chmod 0600 /etc/rsync/rsyncd.scrt

где ПАРОЛЬ тот, что мы выдаем вам при создании в панели управления задания на резервное копирование. В дальнейшем вы можете изменить пароль на свой в файле rsyncd.scrt и на сервере хранения резервных копий в файле /var/www/rc-******/data/rsyncd.pass, где rc-****** ваш логин на сервер с бэкапами.

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

Далее создаем основной конфиг rsyncd.conf cd /etc/ Обратите внимание на то, что файл rsyncd.conf должен быть расположен в папке /etc/

mv rsyncd.conf rsyncd.old делаем так на всякий случай, вдруг файл такой уже есть

cat > /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid

motd file = /etc/rsync/rsyncd.motd

uid = root
gid = root
max connection = 4

auth users = backup
secrets file = /etc/rsync/rsyncd.scrt

[root]
path = /
read only = yes
host allow = ssh.bkp177.backupland.com
EOF

Настройка rsync для Centos 6:

Устанавливаем xinetd (нужен для пуска rsync сервера): yum install -y xinetd

Находите файл /etc/xinetd.d/rsync, в нем находите строку:
disable = yes
и меняете на:
disable = no

Перезагружаем сервис xinetd: /etc/init.d/xinetd restart

Добавляем xinetd в автозапуск: chkconfig xinetd on

Конфиг создаем такой же как и для Centos 7 (смотри ниже).

Настройка rsync для Centos 7:

Включаем в автозагрузку systemctl enable rsyncd.service

Запускаем rsyncd демон systemctl start rsyncd.service

Далее создадим папку для наших файлов: mkdir /etc/rsync/
cd /etc/rsync/

создаем файл приветствия (не обязательно) echo «Hello from rsync server» > rsyncd.motd
echo «Server Adress: My SuperHost 1.1.1.1» >> rsyncd.motd

создаем файл c именем пользователя и паролем echo «backup:ПАРОЛЬ» > rsyncd.scrt
chmod 0600 /etc/rsync/rsyncd.scrt

где ПАРОЛЬ тот, что мы выдаем вам при создании в панели управления задания на резервное копирование. В дальнейшем вы можете изменить пароль на свой в файле rsyncd.scrt и на сервере хранения резервных копий в файле /var/www/rc-******/data/rsyncd.pass, где rc-****** ваш логин на сервер с бэкапами.

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

Далее создаем основной конфиг rsyncd.conf

cd /etc/ Обратите внимание на то, что файл rsyncd.conf должен быть расположен в папке /etc/

mv rsyncd.conf rsyncd.old делаем так на всякий случай, вдруг файл такой уже есть.

cat > /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid

motd file = /etc/rsync/rsyncd.motd

uid = root
gid = root
max connection = 4

auth users = backup
secrets file = /etc/rsync/rsyncd.scrt

[bkpl]
path = /
read only = yes
host allow = ssh.bkp177.backupland.com
EOF

Применяем настройки
для Centos 7 systemctl restart rsyncd.service для Centos 6 service xinetd restart

Если у вас на сервере установлен Firewall вам нужно разрешить входящие соединение на порт 873

Описание полей файла конфигурации rsyncd.conf

Текст конфигурации:
pid file = /var/run/rsyncd.pid #pid файл хранящий ID процесса
motd file = /usr/local/etc/rsyncd.motd #файл приветствия
uid = root #работа под правами этого пользователя*
gid = wheel #работа с правами этой группы*
max connection = 4 #кол-во коннектов со стороны сервиса
auth users = backup #логин пользователя для доступа извне
secrets file = /usr/local/etc/rsyncd.scrt #файл с логином и паролем для доступа извне
[bkpl] #секция, в которой описано что можно делать
path = / #Какую папку можно бэкапить
read only = yes #Разрешено только бэкапить, восстановить нельзя будет
host allow = ssh.bkp177.backupland.com #сервер, где будут храниться резервные копии

Внимание! Вместо ssh.bkp177.backupland.com необходимо указать тот хост, который Вы получили при регистрации. Аналогично, путь /usr/local/etc/ зависит от того, какая установлена операционная система.

* Если вы не собираетесь резервировать весь сервер, тогда права root вы можете заменить на права пользователя, файлы которого вы будете бэкапить.

Источник

Настройка и использование Rsync Server

Утилита rsync позволяет синхронизировать содержимое двух каталогов как для локальной системы, так и удаленных серверов. Это может использоваться как для резервного копирования, так и поддержания в актуальном состоянии нод кластера.

Использование Rsync Server позволит более тонко настроить работу утилиты и оптимизировать сам процесс синхронизации.

Не стоит путать резервную копию с архивом. Если удалить важный файл, при синхронизации он также будет удален на другом устройстве. Для более корректного резервирования данных, также стоит настроить их архивирование.

Установка и запуск

По умолчанию, утилита может быть не установлена в системе. Установка и последующий запуск выполняются следующими командами.

CentOS 8

yum install rsync rsync-daemon

Читайте также:  Соединить два компьютера сеть linux

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)

Причина: не доступен удаленный хост.

Решение: проверить, что хости доступен по сети. Проверить настройку брандмауэра.

Источник

Читайте также:  При смене оперативной памяти не загружается windows
Оцените статью