Синхронизируем файлы на Windows через unison

Posted by

В текущем выпуске заметки я рассмотрю что нужно сделать чтобы на системе Windows можно было работать с утилитой — , ранее я уже опубликовывал заметку где показал как настроить двухстороннюю синхронизацию между двумя Ubuntu 12.04.5 Server amd64 системами, сейчас очередь Windows систем.

Скачиваю по ниже указанной ссылке самую последнюю версию утилиты unison применимо к Windows (подходит, как для Windows XP, 7, Server 2008 R2, другие редакции не пробовал) http://alan.petitepomme.net/unison/assets/Unison-2.40.102.zip После скачивания пакета и распаковки вижу, что присутствует два вида установочных файлов:

  • Unison-2.40.102 Gtk+.exe
  • Unison-2.40.102 Text.exe — использовать буду этот Если Вы не доверяете трафику проходимому между синхронизируемыми системами, то можно поступить следующим образом:
  1. Создать менеджмент сеть между серверами и сервером хранения
  2. Организовать SSH подключение между системами, к примеру задействуя описания из этой заметки.
  3. Посредством сокетов

Дальнейшение решение вывело меня через сайт google где на определенном сайте уже был кем-то опубликован скрипт посредством которого

осуществляется установка cygwin в систему чем я и воспользуюсь посредством командной строки. Не зачем изобретать велосипед — можно взять уже готовое и адаптировать под свою задумку, я так стараюсь иногда делать. (ссылка на скрипт: https://gist.github.com/wjrogers/1016065)

Задался целью дополнить данный скрипт, а именно проработать как через консоль не устанавливая никаких утилит скачать файл установщика cygwin: @echo off

rmdir /S /Q c:\1

mkdir c:\1

bitsadmin /transfer "cydwin" https://cygwin.com/setup-x86.exe c:\1\setup-x86.exe bitsadmin /transfer "cydwin" https://cygwin.com/setup-x86_64.exe c:\1\setup-x86_64.exe

а потом задействовать найденный скрипт Как скачивать файлы через командную строку в Windows

, но пока разберу без настройки синхронизации через ssh соединение. Рассматриваемая схема: 10.7.8.70 (c:\test) 10.7.8.150 (c:\2\*.iso файлы) нужно синхронизировать файлы со 150 на 70

запускаю на 150:

c:\>net use k: \\10.7.8.70\c$ /user:aollo@polygon.local 712mbddr@

проверка соединения

c:\>Unison.exe c:\2 \\10.7.8.70\c$\test -testserver Contacting server…

Начинаю:

c:\>Unison.exe c:\2 \\10.7.8.70\c$\test

-times -auto -terse -batch new file —-> W2003_x64_r2_ee_sd2.iso [BGN] Copying W2003_x64_r2_ee_sd2.iso from C:/2 to //10.7.8.70/c$/test

такая синхронизация очень долгая потому что идет с использованием Windows функций, поэтому вместо iso файлов демонстрирую на примере файла обновлений Windows:

c:\>Unison.exe c:\2 \\10.7.8.70\c$\test

-auto -terse -batch new file —-> Windows6.1-KB2998527-x86.msu [BGN] Copying Windows6.1-KB2998527-x86.msu from C:/2 to //10.7.8.70/c$/test [END] Copying Windows6.1-KB2998527-x86.msu Synchronization complete at 14:19:49 (1 item transferred, 0 skipped, 0 failed)

вот бы еще скорость показывало.

Если использовать ключ: -silent то на консоль вообще не будет выдаваться ни каких сообщений. Как только первая синхронизация была завершена в профиле пользователя создался скрытый файл используемых настроек:

C:\Users\admin\.unison\defaul.prf — посредством него по такому же принципу как и для Ubuntu системы прошлой заметки можно заранее предопределить опции синхронизации:

# Unison preferences file

batch = true

auto = true

confirmbigdel = false

fastcheck = true

prefer = newer

silent = false

times = true

unicode = true

perms = 0

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

c:\>Unison.exe c:\2 \\10.7.8.70\c$\test

Contacting server… Looking for changes Reconciling changes props <==== props Windows6.1-KB2998527-x86.msu new file —-> Windows6.1-KB2998527-x86 (2).msu Propagating updates UNISON 2.40.102 started propagating changes at 14:30:18.00 on 11 Jul 2015 [BGN] Copying properties for Windows6.1-KB2998527-x86.msu from //10.7.8.70/c$/test to C:/2 [END] Copying properties for Windows6.1-KB2998527-x86.msu [BGN] Copying Windows6.1-KB2998527-x86 (2).msu from C:/2 to //10.7.8.70/c$/test [END] Copying Windows6.1-KB2998527-x86 (2).msu UNISON 2.40.102 finished propagating changes at 14:30:19.35 on 11 Jul 2015 Saving synchronizer state Synchronization complete at 14:30:19 (2 items transferred, 0 skipped, 0 failed)

Что собственно мне и нужно.

Если же в директорию test на 10.7.8.70 положить какой либо файл, а потом на 10.7.8.150 запустить строку синхронизации, то добавленный файл также отобразится на 150 машине.

c:\>Unison.exe c:\2 \\10.7.8.70\c$\test

Contacting server… Looking for changes Reconciling changes <—- new file windows_zip.zip Propagating updates UNISON 2.40.102 started propagating changes at 14:36:25.00 on 11 Jul 2015 [BGN] Copying windows_zip.zip from //10.7.8.70/c$/test to C:/2 [END] Copying windows_zip.zip UNISON 2.40.102 finished propagating changes at 14:36:34.55 on 11 Jul 2015 Saving synchronizer state Synchronization complete at 14:36:34 (1 item transferred, 0 skipped, 0 failed)

Отлично, присутствует конечно минус — если файл будет удален и произойдет запланированная синхронизация (в том случае если на обоих машинах установлено задание на запуск unison), то файл на обоих системах будет потерян: c:\>hostname W7X86 c:\>Unison.exe c:\2 \\10.7.8.70\c$\test

Contacting server… Looking for changes Reconciling changes deleted —-> windows_zip.zip Propagating updates UNISON 2.40.102 started propagating changes at 14:39:40.00 on 11 Jul 2015 [BGN] Deleting windows_zip.zip from //10.7.8.70/c$/test [END] Deleting windows_zip.zip UNISON 2.40.102 finished propagating changes at 14:39:42.98 on 11 Jul 2015 Saving synchronizer state Synchronization complete at 14:39:45 (1 item transferred, 0 skipped, 0 failed)

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

nodeletion=c:\2

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

c:\>Unison.exe c:\2 \\10.7.8.70\c$\test

Contacting server… Looking for changes Reconciling changes <=?=> deleted 1 2 : unchanged dir modified on 2015-07-11 at 14:45:00 size 63837 9 unknown permissions test : deleted No updates to propagate

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

На заметку: удобно распространять конфиги по Windows системам к примеру: unison запускаем на одной где изменения раскидываются под другим подключенным системам скриптом. У меня к примеру так. На этом пока завершу свою заметку, до встречи — с уважением автор блога — ekzorchik.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

13 − девять =