- ТОП 5: Программы для синхронизации
- Содержание
- Ubuntu One
- Dropbox
- Grsync
- Unison
- Conduit
- Утилита rsync, синхронизация файлов в Linux
- Введение
- Что такое 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)
ТОП 5: Программы для синхронизации
Содержание
Автор — Андрей Мин (Andrew Min)
Ubuntu One
Ubuntu One — один из новых продуктов Canonical. По смыслу и возможностям он похож на сервис хранения данных в Apple MobileMe. Просто перетащите нужный вам каталог или файл в каталог Ubuntu One, и они будут «автоматически» синхронизи-рованы. Ubuntu One поддерживает объём данных до 2 Гбайт (или до 50 Гбайт за $10 в месяц). К недостаткам стоит отнести тот факт, что ваши данные будут храниться на серверах Ubuntu.
Для установки Ubuntu One вам нужен пакет «ubuntuone-client».
Dropbox
Dropbox — это мощный кроссплатформенный сервис синхро-низации данных. Будучи функционально схожим с Ubuntu One, более зрелый Dropbox может похвастаться некоторыми серьёз-ными отличиями, такими как поддержка симлинков, больше возможностей по хранению данных и гораздо более удобный веб-интерфейс. Кроме того, это кроссплатформенный сервис (поддерживаются Windows, OS X и даже iPhone), и к нему есть множество расширяющих функционал модулей. Так же как и Ubuntu One, он использует промежуточные узлы для синхро-низации, то есть все ваши данные оседают на сервере Dropbox.
Для установки Dropbox скачайте пакет с https://www.dropbox.com/install
Grsync
Grsync — это основанный GTK+ графический интерфейс для известной утилиты rsync. Он поддер-живает сохранение сессий, большинст-во функций rsync (удаление, подроб-ный вывод, игнори-рование существу-ющих элементов, обновление и т.д.) и выполнение команд до и после работы rsync. Чтобы навер-няка избежать удаления крити-ческих данных, можно запустить утилиту в режиме симуляции. К сожа-лению, синхрониза-ция через SSH не работает без дополнительной настройки, но следующие инструкции помогут решить эту проблему: http://url.fullcirclemagazine.org/118bb3.
Для установки Grsync вам нужен пакет «grsync» из репозитория «universe».
Unison
Для установки Unison вам нужен пакет «unison» из репозитория «universe».
Conduit
Conduit считается одной из лучших программ для синхрониза-ции данных. Это созданный в рамках Gnome проект для синхронизации всего со всем. Например, ваших фотографий и альбомов Facebook, заметок Tomboy и Backpack, каталогов с каталогами. Также поддерживается синхронизация с другими компьютерами и внешними устройствами, такими как iPod или жёсткий диск. К интерфейсу Conduit нужно привыкнуть (он немного странный и не похож ни на что из виденного мной раньше), но потом вы ощутите всю невероятную мощь этой программы.
Для установки Conduit вам нужен пакет «conduit» из репозитория «universe».
Утилита rsync, синхронизация файлов в Linux
Введение
Rsync, что означает «remote sync«, в переводе “удаленная синхронизация” — средство синхронизации удаленных и локальных файлов. Утилита использует алгоритм, минимизирующий объем копируемых данных за счёт перемещения только тех участков файлов, которые были изменены. В данном руководстве мы рассмотрим основы использования этой мощной утилиты. В примерах используется Ubuntu 12.04 VPS, но вы можете работать в любом современном дистрибутиве Linux.
Что такое Rsync?
Rsync — очень гибкий инструмент сетевой синхронизации. Это название может также означать сетевой протокол, созданный для его работы. В данном руководстве под rsync мы будем понимать утилиту, а не протокол. Благодаря своей повсеместной распространенности в Linux и Unix-подобных системах и популярности в качестве инструмента для системных скриптов, rsync по умолчанию включена в большинство дистрибутивов Linux.
Опции rsync
- -v — Выводить подробную информацию о процессе копирования
- -q — Минимум информации
- -c — Проверка контрольных сумм для файлов
- -a — Режим архивирования
- -R — относительные пути
- -b — создание резервной копии
- -u — не перезаписывать более новые файлы
- -l — копировать символьные ссылки
- -L — копировать содержимое ссылок
- -H — копировать жесткие ссылки
- -p — сохранять права для файлов
- -g — сохранять группу
- -t — сохранять время модификации
- -x — работать только в этой файловой системе
- -e — использовать другой порт для ssh пример rsync -e «ssh -p 1234»
- -z — сжимать файлы перед передачей
- —delete — удалять файлы которых нет в источнике
- —exclude — исключить файлы по шаблону
- -r —recursive — перебирать директории рекурсивно
- —no-recursive — отключить рекурсию
- —progress — выводить прогресс передачи файла
- —stat — показать статистику передачи
- —version — версия утилиты
Базовый синтаксис
Базовый синтаксис rsync очень прост и аналогичен ssh, scp и cp. Дли синхронизации содержимого директории dir1 в dir2 на той же системе введите команду:
Опция -r означает рекурсивную синхронизацию и обязательна для синхронизации директорий.
Вместо нее можно было воспользоваться флагом -a:
Опция -a — это комбинированный флаг. Она означает архивную синхронизацию и осуществляет рекурсивную синхронизацию с сохранением символических ссылок, специальных файлов, файлов устройств, времени изменения, группы, владельца и прав доступа. Она используется чаще чем -r, и обычно требуются именно ее функции.
Важное замечание: В конце первого аргумента в рассмотренных выше командах указан слэш (/):
Он нужен для того, чтобы определить аргумент как “содержимое dir1”. Без слэша в dir2 была бы помещена сама директория со всеми файлами внутри:
Всегда внимательно проверяйте аргументы при выполнении команды rsync. Специально для этого существуют опции -n или —dry-run (тестовый прогон без фактической синхронизации). Флаг -v (verbose, подробная информация) также полезен для полноценного просмотра выходных данных:
Удалим слэш в конце аргумента и сравним результаты:
Видно, что была передана сама директория.
Использование rsync для синхронизации с удаленной системой
Если у вас есть SSH-доступ к удаленной машине, а rsync установлена на обеих компьютерах, синхронизация с удаленной системой элементарна. После подтверждения SSH-доступа можно синхронизировать директорию dir1 с удаленным компьютером, выполнив следующую команду (обратите внимание, что в данном случае нам нужно передать саму директорию, поэтому слэш в конце не указываем):
Такая операция называется «push» (“толчок”), потому что директория “толкается” из локальной системы в удаленную. Противоположная операция — “pull” (“извлечение”), она применяется для синхронизации с удаленной системы в локальную. Если бы директория dir1 была в удаленной системе, синтаксис был бы следующим:
Как и в случае с cp и подобными командами, источник всегда является первым аргументом, а место назначения — вторым.
Для автоматического копирования, например по cron. Необходимо настроить авторизацию по ключу, как это сделать читайте в этой статье. Тогда в cron достаточно будет добавить выше указанные команды и настроить время в которое они должны выполняться.
Полезные опции
У rsync есть множество опций, которые изменяют заданное по умолчанию функционирование. Мы уже рассмотрели некоторые из них выше. Если вы передаёте несжатые файлы, например, текстовые, можно снизить объем сетевого трафика при помощи опции -z, которая выполняет компрессию:
Очень полезной опцией является -P: она объединяет флаги —progress и —partial. Первый из них показывает ход выполнения передачи, а второй позволяет возобновлять прерванные передачи:
При повторном выполнении команды выходных данных будет меньше, потому что изменений не произошло. Это показывает возможность rsync определять наличие изменений по времени модификации.
Если обновить время модификации некоторых файлов, rsync скопирует только их:
Чтобы действительно поддерживать синхронизацию двух директорий, нужно при удалении файлов в исходной директории удалять их в директории назначения. По умолчанию rsync ничего в ней не удаляет.
Это можно изменить при помощи опции —delete. Прежде чем воспользоваться ей, проведите тестирование с опцией -n, чтобы исключить потерю данных.
Если требуется исключить из синхронизации определенные файлы, их можно указать в разделенном запятыми списке после опции —exclude=:
Если указан шаблон исключения, можно игнорировать его для файлов, соответствующих другому шаблону при помощи опции —include=.
Наконец, опция —backup может использоваться для сохранения резервных копий важных файлов. Она используется совместно с опцией —backup-dir, которая указывает директорию для сохранения резервных копий.
Заключение
Использование rsync может упростить передачу файлов по сети и повысить надёжность локальной синхронизации директорий. Благодаря своей гибкости rsync является полезным инструментом для различных операций на уровне файлов.
Владение rsync позволяет выполнять сложные операции резервного копирования и точно контролировать, что и как передаётся.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Настройка и использование 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)
Причина: не доступен удаленный хост.
Решение: проверить, что хости доступен по сети. Проверить настройку брандмауэра.