Графический интерфейс rsync. Решение частного вопроса создания резервной копии данных с помощью rsync. Графический интерфейс rsync Настройка rsync под виндовс

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

  • Решение для резервного копирования, основанное на реализации rsync для Windows , используют популярную технологию синхронизации файлов и папок , находящихся в разных местах сети, с минимальным объёмом передаваемых данных.

    Технология Rsync бэкапа

    Название технологии копирования rsync (remote synchronization) – дословно: «удалённая синхронизация». Она изначально разрабатывалась, как приложение для Unix. Существует аналог rsync для Windows, cwrsync . Итак, каковы же преимущества резервного копирования rsync для бэкапа и синхронизации в Windows?

    Rsync примеры использования в Handy Backup Server Network

    Версия помогает производить бэкап рабочих станций удалённо по сети так, что необходим всего один человек – администратор сети, который управляет всем процессом резервного копирования удалённо, не прерывая работы пользователей.

    Скачать

    Купить!

    Версия 8.0.4 от 10 июля 2019. 104 MB
    Программа резервного копирования Handy Backup. 27800 RUB за лицензию

    Handy Backup Network Server

    С помощью этой версии программы, Вы сможете управлять бэкапом удаленных рабочих станций по сети. Бесплатный полнофункциональный пробный период - 30 дней!

    Скажем, у Вас есть две рабочие станции в сети, которые вы хотите синхронизировать. Бэкап с помощью rsync для Windows позволяет пересылать лишь данные, различающиеся в конкретных папках на двух машинах, значительно экономя таким образом время работы.

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

    Таким образом, минимизируется поток данных при синхронизации двух папок . Поэтому мы получаем также и меньшее время обработки операции при прочих равных условиях. Пользуясь стандартным оборотом "Время-деньги", получаем, что в каком-то смысле мы уменьшаем и финансовые затраты на бэкап с помощью копирования файлов Rsync.

    Инкрементальный бэкап при помощи rsync в сетях Windows-Unix: за и против

    Давайте посмотрим внимательнее на программный бэкап при помощи rsync. Обратим внимание на наиболее интересные ситуации. Предположим, что у нас теперь смешанная сеть ОС Windows-Unix.

    Основываясь на том, что мы уже неплохо усвоили про rsync сервер, саму эту технологию и резервное копирование с её помощью, мы можем вывести несколько замечательных преимуществ: быстрый инкрементальный бэкап и восстановление, сокращение использования оперативной памяти и ресурсов сети. И вишенка на тортик: это именно тот функционал, который позволяет производить бэкап Linux серверов и рабочих станций так же просто, как и с Windows.

    Существует и ряд возможных проблем использования rsync в Windows :

    • Неопределённость с поддержкой 64-битных серверных платформ;
    • Нестабильность в процессе длительной обработки большого объёма информации;
    • Необходимость настройки приложения для каждой конкретной задачи.

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

    Таким образом, мы понимаем, что, возможно, использование оригинальной утилиты rsync для Windows не спасёт положение, однако, можно просто попытаться адаптировать алгоритм rsync для конкретного приложения Windows.

    Планы расширения технологии Rsync Windows в программе Handy Backup

    В настоящее время разработчики программного обеспечения Handy Backup уделяют большое внимание технологии копирования Rsync, активно внедряя её в такие прикладные операции, как:

    В настоящее время команда разработчиков Handy Backup работает над применением rsync для бэкапа по сети с нескольких контрольных точек. Умный функционал нашей программы позволит вам управлять удалёнными рабочими станциями с практически любой машины в сети, если только вы имеете права доступа (не забываем про безопасность!).

    Разработчики Handy Backup внедрили функционал для бэкапа Rsync Windows и Linux компьютеров, и список возможностей постоянно расширяется! А что, если бы вы могли управлять всей сетью с мобильного устройства Android? Или делать бэкап карты памяти телефона как рабочей станции вашей локальной сети? Нравится идея? Тогда вам понравятся и релизы Handy Backup, работающие на алгоритме rsync backup для Windows от Новософт.

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

    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)

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

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

    Если у вас возникло желание поддерживать рабочие станиции в максимально «защищённом» состоянии, а так же насколько возможно «автоматизировать» этот процесс, то этот пост для вас.

    Будет использоваться:

    Немного batch файла
    Немного Linux сервера
    Немного Windows Server 2008 R2 и Групповых политик

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

    Для этого начнём с клиентской части. Мы используем shadow volume create - expand, дабы исключить проблему нечитания открытых пользователем файлов, таких как Outlook pst, или документов. Нам понадобится набор от Microsoft, который содержит vshadow - это Volume Shadow Copy Service SDK 7.2, который можно бесплатно скачать с серверов Microsoft, http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23490 .Нам понадобятся vshadow.exe и vshadow.pdb файлы из этого SDK. Внимание - они разные для 64-битных, и 32-битных систем.

    64-bit - %PROGRAMFILES%\Microsoft\VSSSDK72\TestApps\vshadow\bin\obj-chk\amd64
    32-bit - %PROGRAMFILES%\Microsoft\VSSSDK72\TestApps\vshadow\bin\release-xp

    Так же нам понадобится набор файлов из cwrsync под Windows -

    После инсталляции их можно будет найти тут:

    %PROGRAMFILES%\cwRsync\bin

    Складываем все файлы в одну папку, назовём её для удобства «Backup», и начинаем создавать файл, который будет запускать эту «машину смерти» - по факту, это простой batch файл, который будет отрабатывать все действия. Назовём его для удобства «backup.cmd»

    Пишем в файл:

    (неведома магия)

    Setlocal
    if NOT "%CALLBACK_SCRIPT%"=="" goto:IS_CALLBACK
    set SOURCE_VOLUME=C:
    set DESTINATION_VOLUME=O:
    set CALLBACK_SCRIPT=%~dpnx0
    set TEMP_GENERATED_SCRIPT=GeneratedVarsTempScript.cmd
    %~dp0\vshadow.exe -nw -p -script=%TEMP_GENERATED_SCRIPT% -exec=%CALLBACK_SCRIPT% %SOURCE_VOLUME%
    del /f %TEMP_GENERATED_SCRIPT%
    goto:EOF
    :IS_CALLBACK
    setlocal
    call %TEMP_GENERATED_SCRIPT%
    %~dp0\vshadow.exe -el=%SHADOW_ID_1%,%DESTINATION_VOLUME%

    Эта часть «макаронного кода» делает shadow volume copy с C: и подключает её на O:, который мы и будем использовать для копирования, а потом тем же скриптом уберём. Теперь часть, которая отвечает за действия rsync:

    (неведома магия)

    Setlocal
    SET CWRSYNCHOME=C:\Backup\ (где папка с файлами rsync и vshadow)
    SET CWOLDPATH=%PATH%
    SET CYGWIN=nontsec
    SET PATH=%CWRSYNCHOME%;%PATH%
    SET HOME=С:\Backup\LOG\ (сюда будем сохранять логи)
    SET RSYNC_PASSWORD=(тут пароль, который установлен на принимающем сервере rsync)
    SET MY_NAME=%computername%

    (теперь указываем, что копировать)

    SET FS_SRC_HOME="/cygdrive/O/Users/" (используем именно в таком формате, указываем папку до "Users")
    SET FS_SRC_BCK="/cygdrive/C/Backup/" (где файлы rsync, чтобы положить их вместе с логами на бекап сервер)

    Del /q С:\backup\log\*.log (стираем старые логи перед запуском)

    (запускаем)

    Rsync -av --chmod=ug=rwx %FS_SRC_B2% backupusr@hostname::sbackupusr/%MY_NAME%
    rsync -avhP --inplace --stats --del --modify-window=1 --log-file=%FS_SRC_BCK%DATA/backupwork.log --exclude-from=%FS_SRC_BCK%DATA/exclude %FS_SRC_HOME% backupusr@hostname::sbackupusr/%MY_NAME%/snapshot/
    rsync -av %FS_SRC_BCK% backupusr@hostname::sbackupusr/%MY_NAME%/snapshot/Backup/

    Первой командой мы создаём директорию по имени компьютера %computername%
    Второй командой мы копируем данные с временно подключенного диска O:\Users, с сохранением лог-файла.
    Третьей командой мы копируем всю папку C:\Backup, для сохранности лога и самой программы.

    Вот эта строка «backupusr@hostname::sbackupusr» - указывает на пользователя на принимающей стороне а так же хост принимающей стороны. (Будет рассмотрено во втором псто).

    После этого нам необходимо отключить O: диск, так как если мы этого не сделаем, в следующий раз vshadow не сможет подключить туда копию, и копия будет делаться со старого O:\ диска всё время, не смотря на то, что файлы в папке пользователя уже давно изменились.

    (неведома магия)

    SET HOME=%HOMEDRIVE%%HOMEPATH%

    VSHADOW.EXE -ds=%SHADOW_ID_1%

    Это всё нужно сложить в обычный.cmd файл, как я уже указывал выше, сохранить его в папку Backup, где хранятся файлы rsync и vshadow, и запускать по мере надобности. Работает на Windows Vista, Windows 7, Windows XP, 32 и 64-bit

    P.S: Конечно, будет необходимо поднять принимающую машину, в нашем случае на базе *nix, и создать разделы, которые будут защищены true-crypt в случае кражи сервера. Так же в дальнейшем эту папку можно запаковать в msi инсталлер для установки на все рабочие станции через Групповые Политики и использовать их же для создания Scheduled Tasks и закрытия доступа в Backup папку для юзера. Но это уже другая история.