Домой / Faq / Описание rsync в Windows - каким он должен быть. Rsync: копирование с Windows на Linux Настройка rsync под виндовс

Описание rsync в Windows - каким он должен быть. Rsync: копирование с Windows на Linux Настройка rsync под виндовс

Решил я всё же добить возможность копирования rsync-ом из-под винды на линукс. Не, ну в самом деле, что за издевательство - такой удобный способ и недоступен!

За основу взял DeltaCopy - cygwin-порт самого rsync и нескольких дополнительных утилит плюс графическая обвязка как для клиента, так и для сервера. GUI-вая часть меня пока не интересует, а вот rsync/win решил испытать. Сразу уточню: есть и другие порты, но их я не проверял и не пробовал.

Особенности

Задавать имя входного каталога на системе с windows лучше в формате /cygdrive/БУКВА/путь , где "буква" - буква диска без двоеточия, например: /cygrive/c/windows .

Windows имеет дурную привычку хранить имена файлов в разных кодировках - и юникод и 1251 и 866, в общем, полный бардак. Юниксы давно перебрались на utf-8 и не заставляют своих пользователей париться по этому поводу.

Rsync из DeltaCopy не поддерживает копирование виндовых ACL и есть какие-то странности с копированием других расширенных атрибутов. Но в моем конкретном случае это не критично, потому не заморачивался уточнениями.

Грабли

Первые грабли, на которые я наступил, это трансляция имён файлов, написанных не латиницей. Порылся в интернетах, где мне напомнили, что есть параметр --iconv=код_из,код_в , позволяющий указать характеристики трансляции
"код_из" - из какой кодировки преобразуем, "код_в" - в какую. Для копирования с windows на linux получаем --iconv=cp866,utf-8 .

Вторая грабля - неожиданное прекращение копирования при указании параметра iconv. Сообщение на отправляющей стороне было совсем невразумительным. А вот в протоколе на самом сервере ситуация немного прояснилась: "rsync: The server is configured to refuse --iconv ". Вот те на! Что за нафиг такой?
Вылечилось, опять же, по советам из этих ваших интернетов, добавлением строки charset=utf-8 в /etc/rsyncd.conf .

Всякое разное

Для большей безопасности, я создал в конфиге rsync-а несколько "модулей" - секций, описывающих разные места для копирования и доступы к ним. Пример такого модуля:


path = /media
use chroot = yes
lock file = /var/lock/media-restore.lock
read only = no
timeout = 600
auth users = восстановитель
uid=root

Это имя модуля. Оно указывается в команде отправки:
... пользователь@сервер_rsync::media/путь
Пользователи вместе с их паролями задаются в файле, описанном в конфиге параметром
secrets file = /etc/rsyncd.secrets
Формат файла: каждый пользователь на отдельной строке в виде логин:пароль , например "восстановитель:пароль_восстановления ". В конце файла желательна пустая строка.

path - путь в файловой системе сервера
use chroot - крайне желательно во избежание злоупотреблений с путями типа модуль/путь/../../запретная_зона
lock file - служебный файл, создаваемый при обработке операций в этом модуле.
auth users - можно задать не только глобальный список разрешенных пользователей, но и для каждого модуля указывать отдельные разрешения. В примере я не хочу, чтобы к модулю получил доступ какой-нибудь другой пользователь
uid - идентификатор пользователя, от имени которого выполняются операции. Сам демон rsync обычно запускается от рута, поэтому проблем с мимикрированием быть не должно. Дополнительно см. описание параметра --super .

FreeFileSync - это программное обеспечение для сопоставления и синхронизации папок, которое создает и управляет резервными копиями всех важных файлов. Вместо того, чтобы копировать каждый файл каждый раз, FreeFileSync определяет различия между исходной и целевой папками и передает только минимальный объем данных. FreeFileSync - это программное обеспечение с открытым исходным кодом, доступное для Windows, Linux и macOS

Бесплатная (с ограничениями) Открытый код Mac Windows Linux openSUSE CentOS Ubuntu Debian

  • Syncthing

    Synching заменяет собственные службы синхронизации и облачных сервисов чем-то открытым, заслуживающим доверия и децентрализованным. Ваши данные являются вашими данными в одиночку, и вы должны выбрать, где он хранится, если он предоставляется третьим лицам и как он передается через Интернет.

    Бесплатная Mac Windows Linux Android Android Tablet BSD Self-Hosted Cloudron

  • SyncToy

    SyncToy - это бесплатный PowerToy, разработанный Microsoft, который обеспечивает простой в использовании графический пользовательский интерфейс, который может автоматически синхронизировать локальные или сетевые файлы и папки, но не файлы WebDAV, «Windows Mobile» или папки и не синхронизировать треугольник, как только Allway Sync , Synkron, SyncLess или GoodSync

    Бесплатная Windows

  • SyncBack

    SyncBack - это программное обеспечение для резервного копирования и синхронизации файлов, которое позволяет выполнять резервное копирование и синхронизацию файлов на одни и те же или разные диски, на разные носители (CD, DVD, Flash, zip) или на удаленный сервер.
    Доступны три версии SyncBack: SyncBackFree, SyncBackSE (shareware) или SyncBackPro (shareware)

    Бесплатная (с ограничениями) Mac Windows Linux Android Android Tablet

  • GoodSync

    GoodSync - это профессиональное легкое и надежное программное обеспечение для резервного копирования файлов и синхронизации файлов.

    Бесплатная (с ограничениями) Mac Windows Android iPhone Android Tablet iPad

  • Synkron

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

    Бесплатная Открытый код Mac Windows Linux PortableApps.com

  • Unison

    Unison - это инструмент синхронизации файлов для Unix и Windows. Он позволяет хранить две копии коллекций файлов и каталогов на разных хостах (или разных дисках на одном и том же хосте), изменяться отдельно, а затем обновляться, распространяя изменения каждой реплики на другую.

    Бесплатная Открытый код Mac Windows Linux

  • Bvckup 2

    Простое быстрое резервное копирование для Windows. С первого взгляда - небольшой и очень тощий, очень быстрый дельта-копировальный аппарат, отличный пользовательский интерфейс, отслеживание устройств, теневое копирование, обнаружение движения / переименования, режим «как работает», надежная поддержка многомиллионных резервных копий элементов с терабайтами данных, интеллектуальный и дискретный механизм обновления

    Платная Windows

  • Déjà Dup

    Déjà Dup - простой инструмент резервного копирования. Он скрывает сложность создания резервных копий «правильный путь» (зашифрованный, вне сайта и регулярно) и использует Duplicity в качестве бэкэнд. Он поддерживает локальные или удаленные места резервного копирования, включая Amazon S3.

    Бесплатная Открытый код Linux

  • Rclone

    Rclone - это программа командной строки для синхронизации файлов и каталогов с и из:
    - Гугл Диск
    - Amazon S3
    - Openstack Swift / Rackspace облачные файлы / Memset Memstore
    - Dropbox
    - Google Cloud Storage
    - Amazon Cloud Drive
    - Microsoft One Drive
    - Хубический
    - Backblaze B2
    - Yandex Disk
    - Локальная файловая система

    Бесплатная Открытый код Mac Windows Linux BSD Solaris FreeBSD NetBSD OpenBSD

  • Supported platforms: Vista/2008(R2)/7/8/2012(R2)/10/2016

    cwRsync comes as a zip archive containing a package. Unzip downloaded file and run cwRsync_x.x.x_Installer.exe or cwRsync_Server_x.x.x_Installer.exe (server version) :

    1. Click Next at Welcome-page
    2. View license agreement.
    3. Select components that varies depending on package type: Client package has an optional component (Secure Channel Wrapper & Wizard ). It makes creation of secure channels to cwrsync servers an easy task.
    4. Specify an installation location.
    5. (cwRsyncServer only ) Specify a service account.
    6. Installation starts. By clicking "Details" button, you can get more detailed information about installation. Check if everything seems ok.

    You"re DONE! cwRsync is installed on your machine.

    cwRsync server only

    You should update the configuration file according to your needs. If you have defined uploadable modules (read only = false), you have to make sure that Rsync Server has correct permissions on directories behind those modules. You can use Prep a Dir for Upload wizard from the start menu for that purpose.

    cwRsync installs rsync server as a service (RsyncServer ) with following parameters:

    --config rsyncd.conf --daemon --no-detach

    Default start mode is manual.

    Usage

    With the following features is available from the start menu:

    • Specify sources and destination (local, remote ssh and daemon modes)
    • Specify filters and a subset of options
    • Create rsync command according to your specification
    • Run rsync on the fly both in production and test mode
    • Create batch files for task scheduling
    • Save and load your favorite rsync settings as profiles
    • Language localization

    Client installation includes also a batch file starting rsync in a right environment. You can customize it according to your needs. Man pages in html format are also available from start menu. cwRsync FAQs from this site can also be helpful.

    Добрый день! Возникла проблема: Никак не могу скопировать файлы с сервера на локальный компьютер под Windows. Пробовал так: Нахожусь на сервере, в папке с сайтами. Пишу такую команду: rsync -czavP сайт_1 localhost:Z:/home/сайт_1/ . Либо пишет, что пароль неправильный, либо запрашивает пароль к локальной машине, которого у меня на самом деле нет. В чем беда? Буду благодарен за помощь)Дмитрий

    Что такое rsync?

    Во-первых, rsync это утилита использующася только в Linux-системах. Для того, чтобы она работала в windows, её нужно устрановить там и настроить, например через cygwin. Во-вторых, почему вы пытаетесь отправлять файлы на localhost ? Localhost — это внутренний адрес-петля 127.0.0.1. При попытке отправить файлы туда, находясь в linux, вы пытаетесь подключиться с сервера на самого себя, т.е на сам сервер.

    Как сделать синхронизацию папки c Linux на Windows?

    Для того чтобы отправить файлы в windows c помощью rsync самый лучший способ — это смонтировать файловую систему локального windows-компьютера на сервер через по smb. Тогда не потребуется устанавливать rsync на сам Windows и это решает проблему с доступом между сервером и домашним компьютером.

    Для этого нужно подключаясь к серверу с локального компьютера сделать . Пробрасывать нужно localhost:445. Затем, нужно чтобы в системе на сервере был установлен пакет cifs-utils. Расшариваете на локальном компьютере нужную папку, затем создаете точку монтирования на сервере, и монтируете туда уже c localhost. Кстати, на нашем сайте есть генератор-скриптов для бэкапов сайта, и в нем реализована генерация такого скрипта.

    Пример скрипта для синхронизации папок

    Давайте посмотрим на примере такого скрипта подобное копирование:

    Start /b d:plink.exe -pw rootpassword [email protected] -N -R 445:localhost:445
    d:plink.exe -pw rootpassword [email protected] -C "mkdir /tmp/win&&mount -t cifs -o rw,nounix,soft,intr,username=user,password=windowspass //localhost/backup /tmp/win"
    d:plink.exe -pw rootpassword [email protected] -C "rsync -a --no-p --no-o --no-o --no-t /var/www/example.com/ /tmp/win && umount /tmp/win&&rmdir /tmp/win"
    taskkill /f /im plink.exe

    В первой строке запускаем в фоне программу plink.exe (консольный ssh-клиент для Windows). Подключаемся на удаленный сервер example.com и туннелируем порт 445 с локальной машины на lo-интерфейс сервера. После подключения по ssh сервер будет «думать», что у него на localhost:445 есть windows-шара или запущен smb, сервер.

    start /b d:plink.exe -pw rootpassword [email protected] -N -R 445:localhost:445

    Здесь мы создаем точку монтирования, и монтируем расшаренную папку в созданную точку. После этого на сервере в созданной точке будет доступна файловая система локального компьютера. Сервер при этом «думает» что эта папка находится физически на нем самом. Соответственно он может выполнять любые операции над ней, запись и удаление файлов, так, как будто это его собственная папка.

    d:plink.exe -pw rootpassword [email protected] -C "mkdir /tmp/win&&mount -t cifs -o rw,nounix,soft,intr,username=user,password=windowspass //localhost/backup /tmp/win"

    Ну и здесь мы выполняем непосредственно синхронизацию папки сайта в эту папку. Все файлы отправляются на локальный компьютер, за это отвечает монтирование шары и туннель. Команде rsync передаем опции не сохранять атрибуты файлов — владельца и права, поскольку windows всё равно ничего не знает о таких атрибутах и не умеет с ними работать. По окончании синхронизации отмонтируем локальную шару от сервера.

    d:plink.exe -pw rootpassword [email protected] -C "rsync -a --no-p --no-o --no-o --no-t /var/www/example.com/ /tmp/win && umount /tmp/win&&rmdir /tmp/win"

    Здесь мы «убиваем» SSH-cессию, запущенную в фоне в самом начале.

    taskkill /f /im plink.exe

    Если вы поймете как это работает, то сможете аналогично использовать это на своих серверах. Или просто сделайте скрипт через наш (вкладка rsync для бэкапа файлов) со своими данными и запустите его. Перед этим установите cifs-utils на сервер.

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

    CentOS 7

    yum install rsync

    systemctl enable rsyncd

    systemctl start rsyncd

    Ubuntu

    apt-get install rsync

    Открываем следующий файл:

    vi /etc/default/rsync

    Находим запись:

    RSYNC_ENABLE=false

    И меняем на:

    RSYNC_ENABLE=true

    Запускаем:

    /etc/init.d/rsync start

    Настройка

    Открываем конфигурационный файл rsync:

    vi /etc/rsyncd.conf

    И настраиваем его, примерно, следующим образом:

    max connections = 10
    exclude = lost+found/
    dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 *.rar *.7z *.mp3 *.jpg


    path = /data1/
    comment = Public folders
    read only = yes
    list = yes
    auth users = rsync_d1

    hosts allow = localhost 192.168.0.15 192.168.0.20
    hosts deny = *


    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 серверу (в данном примере, со всех, кроме разрешенных).

    Создаем файл для аутентификации:

    vi /etc/rsyncd.scrt

    rsync_d1:password1
    rsync_d2:password2
    backup:password3

    * где rsync_d1:password1 — соответственно, пользователь rsync_d1 с паролем password1 .

    В целях безопасности, устанавливаем доступ только для владельца:

    chmod 600 /etc/rsyncd.scrt

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

    systemctl restart rsyncd

    /etc/init.d/rsync restart

    service rsyncd restart

    Добавляем порты в брандмауэр.

    firewall-cmd --permanent --add-port=873/tcp

    firewall-cmd --permanent --add-port=22/tcp

    firewall-cmd --reload

    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 [email protected]::data1 /tmp/

    * где 192.168.0.5 — IP-адрес rsync сервера.

    Пример готового скрипта для синхронизации папок

    Скрипт довольно прост:

    #!/bin/bash
    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

    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 — каталог, в который синхронизируем файлы.

    После создаем файл с паролем:

    vi /etc/rsyncd.scrt

    * в данном файле указываем только пароль без имени учетной записи.

    После задаем права:

    chmod 600 /etc/rsyncd.scrt

    Автоматизировать синхронизацию можно с помощью CRON:

    0 */1 * * * /scripts/syncing.sh

    * где /scripts/syncing.sh — наш скрипт. В данном примере задание будет выполняться каждый час.

    Ключи запуска rsync

    Общий синтаксис:

    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-сервер, получать поддержку, обновления безопасности и возможность работать в графическом интерфейсе.

    Процедура использования клиента cwRsync аналогична описанному выше. Скачиваем архив программы и распаковываем его. Запускаем командную строку и переходим в каталог bin (находится в папке, куда была распакована программа).

    Запускаем синхронизацию:

    rsync.exe -avv --progress [email protected]::data1 /cygdrive/c/temp

    * обратите внимание на путь назначения — чтобы обратиться к диску C мы написали /cygdrive/c . Итоговое назначение — C:\temp .

    Копирование с помощью SSH:

    rsync.exe -avv -e "./ssh -p 22" --progress [email protected]:/data/ /cygdrive/c/temp

    * обратите внимание, что мы пишем не ssh, а ./ssh , иначе, если мы используем 64-х битную систему и бесплатный пакет cwRsync, система не найдет путь до ssh и выдаст ошибку Failed to exec ssh: No such file or directory .

    Примеры использования rsync

    Простая команда для синхронизации двух каталогов:

    Команда для резервного копирования:

    rsync -ab --delete-after [email protected]::data_source /data_destination

    Выполнение синхронизации по SSH:

    rsync -a --delete-after -e "ssh -p 22" [email protected]:/data_source /data_destination

    * по SSH запросы идут не через rsync server. В данном примере подключение будет выполнено по 22 порту, под учетной записью user .

    Копирование файлов на удаленную машину:

    Синхронизация в обе стороны (запускаем две команды по очереди):

    rsync -a --delete-after [email protected]::data_source /data_destination

    rsync -a --delete-after /data_destination [email protected]::data_source

    Синхронизация файлов по маске:

    rsync -a --include="*.txt" --exclude="*" [email protected]::data_source /data_destination

    * в этом примере будут синхронизированы только файлы с расширением txt .

    Исключить каталог:

    rsync -a --exclude="folder/*" [email protected]::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)

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

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