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

How to backup using Acrosync

It is very simple to use Acrsync.


Advanced Options

If your server uses different port than 22, you can specify here. There are also some advanced options such as:

  • Public key authentication. This will enable public key to connect to your ssh server.
  • Propagate deletion. This feature will enable file deletions on the destination if they do not exist in the source. Its good for syncing two directories.
  • Create Incremental Snapshot. This is the feature that we love. Acrosync will only copy of the modified files only. Not the full backup everytime
  • Dry run. Enable this to simulate the backup job.

Download Acrosync Now

3. GRsync

GRsync is a graphical rsync for Windows. It comes with a simple interface and yet easy to use. It mainly used for sync and backup files. Grsync makes use of the GTK libraries and is released under the GPL license. We don’t have to install Gnome libraries on Windows in order to use GRsync. Grsync is a bit outdated but still supports Windows 10. The latest version of GRsync is 0.6.3 and last update was in July 2016.

How to install GRsync on Windows

Follow these steps to install GRsync on Windows 10


Please note that it will not create a program shortcut on your Windows start menu. So, we need to open the following directory to access the GRsync executable file.

C:\Program Files\Grsync\bin

You may change the C:\Program Files\Grsync\ with your actual installation directory. Double click grsync file inside bin directory above.

GRsync does not support direct ssh connection to the server. You have to mount the remote directory to your Windows.

Final Thought

Rsync for Windows is a great tool to backup and sync our files to remote computer or server. Acrosync offers a great experience when using their Rsync software. DeltaCopy also great but it needs a server software to work. Here are the summary of these Rsync Windows software we review on this post.

Features DeltaCopy Acrosync GRsync
Support Linux SSH Server No Yes No
Needs Server Software Yes No No
Incremental Backup Yes Yes Yes
Schedule Backup Yes Yes Yes
License Free - Open Source Paid Free - Open Source

Thanks for reading this Rsync for Windows review and see you on the next post.

Решил я всё же добить возможность копирования 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.

    В процессе создания кластера стал вопрос: чем же можно обеспечить синхронизацию файлов и папок на отдельных узлах? После недолгих поисков всевозможных готовых решений наткнулся на известную утилиту, работающую под Unix – Rsync. У многих администраторов появилась необходимость синхронизировать каталоги между Unix-Windows серверами. Так получил жизнь проект cwRsynс. Суть этого проекта в том, что утилита Rsync запускается по Windows с помощью библиотеки cygwin.

    В моем случае возможность взаимодействия с Unix серверами в перспективе очень радовала. Также отзывы админов о работе Rsync под Unix были очень положительными, и я решил попробовать.

    В этой статье мы рассмотрим каким образом настраивается синхронизация жесткого диска с помощью cwRsynс. Русскоязычных статей по работе с cwRsync я не нашел – все дружно копируют четыре шага по установке, и не касаются работы и настройки. Основную массу информации я черпал из http://rsync.samba.org , ведь параметры запуска для Rsync и cwRsync остаются одинаковыми.

    Принцип синхронизации с помощью cwRsync состоит в следующем: на главном сервере (в нашем случае Сервер№1) запускается демон cwRsync при старте системы. В конфиге указывается к каким ресурсам будет даваться доступ. Клиент конфигурируется на втором сервере (Сервер№2). С определенной периодичностью на втором сервере запускается клиент, который соединяется с сокетом первого сервера, после чего происходит синхронизация. Взаимодействие происходит по локальным IP адресам:

    Пример: Схема синхронизации cwRsync.

    1. Установка cwRsync.
    Для начала необходимо скачать и установить утилиту cwRsync. Установщик можно скачать отсюда .

    Нужно выбрать последнюю версию. Перед установкой стоит убедиться, что совместима с конфигами старой версии.
    Нам необходимо установить его на все узлы кластера. Процесс установки совсем прост: все значения можно оставить по умолчанию. cwRsync установиться в c:\Program Files\cwRsync\.

    После установки можно выполнить следующие рекомендации:

    Добавте $CYGWIN_INSTALL_PATH/bin/ в переменную окружения PATH
    Панель управления -> Система -> Дополнительно -> Переменные окружения
    Решите проблему с не-ascii символами. Т.е. нужно с www.okisoft.co.jp/esc/utf8-cygwin/ скачать файл cygwin.dll и заменить им тот, что идет в комплекте с cwRsync.
    Для того чтобы файлы с не-ascii смволами в имене нормально передавались, добавте --iconv=. в опции при вызове rsync.

    У меня после установки проблем с кодировкой либо работой не наблюдалось. Также далее при конфигурировании я использовал прямые пути. Поэтому рекомендации можно не выполнять.

    2. Работа с cwRsync на Сервер№1:
    Для начала необходимо создать конфиг. файл. Создадим в c:\Program Files\cwRsync\bin\ папки conf и log . В папке conf создадим файл rsyncd.conf следующего содержания:

    #### rsyncd.conf file #### uid = user_id gid = user_id use chroot = false # Даём разрешение использовать все диски а не только C. Если мы # установим в true, то rsync сможет обращатся только к диску С. hosts allow = 192.168.1.6 # Разрешаем обращаться только с Сервер№2 # Метка диска С path = /cygdrive/c/ comment = this is system drive read only = true #Метка диска Д path = /cygdrive/d/ comment = this is date drive read only = true #transfer logging = yes #### End of configuration file #### use chroot = yes – запуск rsync в chroot, для пущей безопасности; – название модуля; uid – должен соответствовать id владельца каталога, в который мы собираемся записывать; path – полный путь до каталога, в который будем записывать; list = no – не показывать секцию в листинге; comment – комментарий; read only = false – открыть секцию на запись; hosts allow – разрешить доступ к секции push только для определённых адресов; auth users = push – разрешить доступ только пользователю push; secrets file – файл соответствия имени пользователя определённому паролю.

    Примечание:

    Мне так и не удалось заставить обменятся файлами клиент с сервером, если указать в path путь к папке. Если указать что-то типа path = /cygdrive/c/backup/ , клиент завершит работу ошибкой, а в логе появляется: 2009/01/06 13:27:35 name lookup failed for 127.0.0.1: Unknown server error 2009/01/06 13:27:35 connect from UNKNOWN (127.0.0.1) 2009/01/06 13:27:35 rsync: chdir / failed: No such file or directory (2)

    Зато когда указываешь имя папки в параметрах клиента, то всё работает.

    "C:\Program Files\cwRsync\bin\rsync.exe" --config "C:\Program Files\cwRsync\bin\conf\rsyncd.conf" --daemon --log-file "C:\Program Files\cwRsync\bin\log\rsyncservice.log" --address 192.168.1.5

    Config rsyncd.conf – указываем, где находится файл конфигурации. --daemon – запуск демона --log-file – включение ведения лога --address – указываем, какой адрес слушать

    Полный перечень возможных параметров:

    Daemon run as an rsync daemon --address=ADDRESS bind to the specified address --bwlimit=KBPS limit I/O bandwidth; KBytes per second --config=FILE specify alternate rsyncd.conf file --no-detach do not detach from the parent --port=PORT listen on alternate port number --log-file=FILE override the "log file" setting --log-file-format=FMT override the "log format" setting --sockopts=OPTIONS specify custom TCP options -v, --verbose increase verbosity -4, --ipv4 prefer IPv4 -6, --ipv6 prefer IPv6 -h, --help show this help (if used after --daemon)

    После запуска демона появится окно Windows Firewall и процесс в менеджере задач.

    Windows Firewall: Блокирование rsync демона.

    Необходима нажать Unblock. Если всё работает нормально, то нужно добавить запуск bat файла в Планировщик Задач:

    Планировщик задач: Запуск демона cwRsync при старте сервера.

    Таким образом, сервер cwRsync будет запускаться при старте узла.

    3. Работа с cwRsync на Сервер№2:
    Установим cwRsync на Сервер№2. Создадим в c:\Program Files\cwRsync\bin\ папки bat и log. В папке bat создадим следующий файл с именем sync_all.bat. В этом файле создадим записи для синхронизации каждой необходимой папки. Следует включать исключения для папок с логами и статистикой. Вот общий вид строки.

    "C:\Program Files\cwRsync\bin\rsync.exe" -av --delete --exclude "/logs/" ::drive_c/Folder1/ "/cygdrive/c/Folder1/">"C:\Program Files\cwRsync\bin\log\Folder1.log"

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

    Примечание:

    Можно запускать с ключом –n при пробном запуске. С этим ключом отображается весь процесс, но реальные копирование, удаление, изменения не производятся.

    Каждая запись состоит из следующих частей

    A равносильно –rlptgoD r - рекурсивный режим l - пересоздание symlinks, это значит, что символические ссылки будут так же переноситься p – перенос прав t - передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации g - установить группу конечного файла таким же, как и у исходного o - установить владельца конечного файла таким же, как и у исходного v - verbose. Вывод сообщений в терминал. --delete - удаляет файлы, которых нет в источнике. --exclude – указываем то, что синхронизировать не нужно. user_id – uid, описанный на сервере @192.168.1.5 – IP адрес сервера::drive_d /Folder_sync1/ – Метка сервера и путь "/cygdrive/d/Folder_sync1/" - куда >"C:\Program Files\cwRsync\bin\log\Folder_sync1.log" - весь вывод в файл

    Обратите внимание на последний слеши в путях, так как они имеют значение для rsync. Если на конце исходной директории стоит «/», то это означает копирование содержимого директории; отсутствие слеша означает копирование директории и ее содержимого.
    Если не указать /, то на клиент в папке создастся папка с файлами. Иначе просто её содержимое.
    При первом запуске синхронизации на Cервер№2, также появится сообщения от брандмауэра Windows о блокировании Rsync. Необходимо нажать Unblock.
    Вот список всех допустимых параметров:

    V, --verbose increase verbosity -q, --quiet suppress non-error messages --no-motd suppress daemon-mode MOTD (see caveat) -c, --checksum skip based on checksum, not mod-time & size -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X) --no-OPTION turn off an implied OPTION (e.g. --no-D) -r, --recursive recurse into directories -R, --relative use relative path names --no-implied-dirs don"t send implied dirs with --relative -b, --backup make backups (see --suffix & --backup-dir) --backup-dir=DIR make backups into hierarchy based in DIR --suffix=SUFFIX backup suffix (default ~ w/o --backup-dir) -u, --update skip files that are newer on the receiver --inplace update destination files in-place --append append data onto shorter files --append-verify --append w/old data in file checksum -d, --dirs transfer directories without recursing -l, --links copy symlinks as symlinks -L, --copy-links transform symlink into referent file/dir --copy-unsafe-links only "unsafe" symlinks are transformed --safe-links ignore symlinks that point outside the tree -k, --copy-dirlinks transform symlink to dir into referent dir -K, --keep-dirlinks treat symlinked dir on receiver as dir -H, --hard-links preserve hard links -p, --perms preserve permissions -E, --executability preserve executability --chmod=CHMOD affect file and/or directory permissions -A, --acls preserve ACLs (implies -p) -X, --xattrs preserve extended attributes -o, --owner preserve owner (super-user only) -g, --group preserve group --devices preserve device files (super-user only) --specials preserve special files -D same as --devices --specials -t, --times preserve modification times -O, --omit-dir-times omit directories from --times --super receiver attempts super-user activities --fake-super store/recover privileged attrs using xattrs -S, --sparse handle sparse files efficiently -n, --dry-run perform a trial run with no changes made -W, --whole-file copy files whole (w/o delta-xfer algorithm) -x, --one-file-system don"t cross filesystem boundaries -B, --block-size=SIZE force a fixed checksum block-size -e, --rsh=COMMAND specify the remote shell to use --rsync-path=PROGRAM specify the rsync to run on remote machine --existing skip creating new files on receiver --ignore-existing skip updating files that exist on receiver --remove-source-files sender removes synchronized files (non-dir) --del an alias for --delete-during --delete delete extraneous files from dest dirs --delete-before receiver deletes before transfer (default) --delete-during receiver deletes during xfer, not before --delete-delay find deletions during, delete after --delete-after receiver deletes after transfer, not before --delete-excluded also delete excluded files from dest dirs --ignore-errors delete even if there are I/O errors --force force deletion of dirs even if not empty --max-delete=NUM don"t delete more than NUM files --max-size=SIZE don"t transfer any file larger than SIZE --min-size=SIZE don"t transfer any file smaller than SIZE --partial keep partially transferred files --partial-dir=DIR put a partially transferred file into DIR --delay-updates put all updated files into place at end -m, --prune-empty-dirs prune empty directory chains from file-list --numeric-ids don"t map uid/gid values by user/group name --timeout=SECONDS set I/O timeout in seconds --contimeout=SECONDS set daemon connection timeout in seconds -I, --ignore-times don"t skip files that match size and time --size-only skip files that match in size --modify-window=NUM compare mod-times with reduced accuracy -T, --temp-dir=DIR create temporary files in directory DIR -y, --fuzzy find similar file for basis if no dest file --compare-dest=DIR also compare received files relative to DIR --copy-dest=DIR ... and include copies of unchanged files --link-dest=DIR hardlink to files in DIR when unchanged -z, --compress compress file data during the transfer --compress-level=NUM explicitly set compression level --skip-compress=LIST skip compressing files with suffix in LIST -C, --cvs-exclude auto-ignore files in the same way CVS does -f, --filter=RULE add a file-filtering RULE -F same as --filter="dir-merge /.rsync-filter" repeated: --filter="- .rsync-filter" --exclude=PATTERN exclude files matching PATTERN --exclude-from=FILE read exclude patterns from FILE --include=PATTERN don"t exclude files matching PATTERN --include-from=FILE read include patterns from FILE --files-from=FILE read list of source-file names from FILE -0, --from0 all *from/filter files are delimited by 0s -s, --protect-args no space-splitting; wildcard chars only --address=ADDRESS bind address for outgoing socket to daemon --port=PORT specify double-colon alternate port number --sockopts=OPTIONS specify custom TCP options --blocking-io use blocking I/O for the remote shell --stats give some file-transfer stats -8, --8-bit-output leave high-bit chars unescaped in output -h, --human-readable output numbers in a human-readable format --progress show progress during transfer -P same as --partial --progress -i, --itemize-changes output a change-summary for all updates --out-format=FORMAT output updates using the specified FORMAT --log-file=FILE log what we"re doing to the specified FILE --log-file-format=FMT log updates using the specified FMT --password-file=FILE read daemon-access password from FILE --list-only list the files instead of copying them --bwlimit=KBPS limit I/O bandwidth; KBytes per second --write-batch=FILE write a batched update to FILE --only-write-batch=FILE like --write-batch but w/o updating dest --read-batch=FILE read a batched update from FILE --protocol=NUM force an older protocol version to be used --iconv=CONVERT_SPEC request charset conversion of filenames --checksum-seed=NUM set block/file checksum seed (advanced) -4, --ipv4 prefer IPv4 -6, --ipv6 prefer IPv6 --version print version number (-h) --help show this help (see below for -h comment)