IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Обсуждение программ (http://www.imho.ws/forumdisplay.php?f=3)
-   -   [REQ] Автоматическая синхронизация с удалённым сетевым ресурсом (http://www.imho.ws/showthread.php?t=145231)

Plague 19.01.2011 14:37

Автоматическая синхронизация с удалённым сетевым ресурсом
 
Ни кому на ум не приходит ничего для сабжа?
Поднята Samba на никсе дома, туда доступ на winshare с работы через VPN да еще и через кучу роутов. Канал на работе достаточно слабый, а дома еще и торренты.. Соответственно, открыть то или иное на редактирование можно, но тупить начинает безбожно.

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

StRaNNiK 19.01.2011 15:31

мне на ум пока пришел только Dropbox. Благо под линукс он тоже появился.

Plague 19.01.2011 15:37

не совсем то.

мне не нужно онлайн ничего. и линукс тож непричем. есть шара. обычная. вида
\\xx.xx.xx.xx\share
и есть локальная копия ее.
нужно локальную копию при каких либо изменениях синхронизировать с шарой.

Val14 19.01.2011 15:50

Цитата:

Сообщение от Plague (Сообщение 1735886)
нужно локальную копию при каких либо изменениях синхронизировать с шарой

я давно не пользовался, но, теоретически, должен помочь nncron

Plague 19.01.2011 15:57

Цитата:

nnCron LITE is a small, but full-featured scheduler that can start applications and open documents at a specified time or with specified frequency. nnCron LITE is a perfect freeware Windows clone of a well-known UNIX scheduler Cron (including all the useful Anacron features).
Чем? мне не нужен шедулер.
мне нужен синхронизатор измененного, который будет висеть в памяти постоянно и смотреть в заданный каталог. как только в его дереве что-то изменилось, он это "что-то" перенес в указанную шару. а копировать всё - так это у меня с вышеуказанными тормозами быстрей получится..


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

Val14 19.01.2011 16:06

Цитата:

Сообщение от Plague (Сообщение 1735891)
мне нужен синхронизатор измененного

У nnCron есть свой язык, на котором это всё можно описать.
Если заглянешь на Руборд, там есть здоровенная ветка по nnCron - они тебе за пять минут сварганят на Форте всё, что нужно.

Если не устраивает, дак я и не настаиваю )))

Plague 19.01.2011 16:09

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

Borland 19.01.2011 16:15

Plague, можно нарисовать достаточно тупой cmd-скрипт синхронизации и повесить его в шедулер. Запуск, скажем, раз в 5 минут. Можно и чаще, если файлы небольшие и их не шибко много.
Так чтобы оно сразу при изменении синхронизацию запускало - это уже уровень драйвера ФС, сложно в написании и накладно по ресурсам. Впрочем, в виндах такой сервис в принципе реализован, Distributed File System называется. Но, насколь мне известно, для репликации DFS необходимы серверные ОС и Active Directory...

Вариант: "резидентный" скрипт, который постоянно пересчитывает в цикле CRC для файлов каталога, и при изменении запускает копирование в сетевой каталог. Дабы меньше грузить систему (такой скрипт в состоянии полностью загрузить ядро процессора) можно вставить между проверками секундные промежутки. Опять же не realtime, но максимально близко к тому (если опять же файлов не слишком много)...

Plague 19.01.2011 16:43

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

Цитата:

Сообщение от Borland (Сообщение 1735895)
если опять же файлов не слишком много

много. в районе 2,5 тыщ...

KalaSh 19.01.2011 16:49

Plague, смотри утилиту nnbackup, параметр sync. Её через тот же nncron можно повесить на проверку каждую минуту.
Тут подробнее _http://www.nncron.ru/nnbackup/help/RU/working/modes/sync.htm

Borland 19.01.2011 17:36

Малость ещё подумал. :biggrin:
Если не заморачиваться с контрольными суммами, то можно всё сделать намного быстрее и элегантнее. Используя тот факт, что все программы (а точнее - сама Win) при изменении файла устанавливают ему атрибут "архивный". :biggrin:
FileChronizer.cmd
Код:

SET "LOCALFOLDER=d:\Temp\0000"
SET "REMOTEFOLDER=\\Server\Share"

:INCEPTION
for /f "tokens=* delims=" %%F in ('dir "%LOCALFOLDER%" /b /s /A:A') do call :FCOPY "%%F"
1>nul 2>&1 ping -n 6 localhost
goto INCEPTION

:FCOPY
xcopy /m /y %1 "%REMOTEFOLDER%%~p1"
goto :EOF

В бесконечном цикле: Dir "все файлы в папке с установленным атрибутом архивный", скопировать каждый из них в удалённый каталог (с относительным путём) и снять атрибут, выждать 5 секунд и вернуться в начало цикла.
Всё гениальное просто. :biggrin:

Borland 20.01.2011 01:45

Гы. Часа 3 мы с Plague проблему в аське мусолили...
В результате ночных поисков найдено:
robocopy http://technet.microsoft.com/ru-ru/magazine/2006.11.utilityspotlight.aspx
Утилита сложная, однако практически готовое решение.

И до кучи richcopy http://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight.aspx

И демка с реализацией того же самого в PowerShell. http://www.techdays.ru/videos/1033.html :ржать:

Plague 20.01.2011 11:33

добавлю немного.

Вообще, я видел сабж в следующем функционале:
Насколько я себе представляю, любая функция записи куда бы то ни было, использует функцию write:$path или что-то на это похожее. И был полностью уверен в том, что полным-полно софта использующего именно это дело. Логика проста: Не нужно постоянно сканить заданный исходный каталог, достаточно просто пасти обращение write к нему, а уже отловив его, смотреть что за write, куда write, какой результат и производить дальнейшие действия (синхронизацию с целевым в данном случае).

И создавая этот топик я думал что щас с хохотом вывалят цельную кучу подобного софта. Потому и не воспринимал варианты с кроном. Но похоже что подобного софта действительно нет :( (Борланд утверждает, что жрать ресурсов софтина основанная на этой функции будет очень много.. Возможно конечно, но я так не думаю).

Dropbox, несмотря на то, что я сперва тоже отмел его, действительно работает очень оперативно (и не удивлюсь если как раз использует вышеописанный вызов). Но, блин на моей линуксовой тачке запускаться не захотел (косяк именно у меня: у Caesar'я работает отлично, а мне разбираться неохота - тот debian перенес столько всяческих экспериментов, что спасибо что хоть вообще запускается :biggrin: ), так что "обломался весь банный день"© :( .

Из кроновых систем - да, я мануал по ссылке KalaSh поглядел - должно работать; из аналогичных примочек (в одном флаконе, но хотят денег) нарыл DirSync Directory Synchronizer (есть тут где-то ;) ).

Щас наверно действительно заюзаю Борландовский скрипт. У него один недостаток: он зеркалит в целевой (REMOTEFOLDER) не содержимое исходного, а сам исходный.
Тоесть в том примере, что написал Borland, в целевом каталоге мы будем иметь не то, что у нас было в "0000", а каталог "Temp\0000" со всем содержимым. Борланд сказал, что можно и это поправить, но будет жрать больше ресурсов, проще поманипулировать с самими путями исходного и целевого, что по крайней мере в моём случае, вполне осуществимо.

И последнее, по поводу PowerShell:
Я нашел приведенную Борландом ссылку шастая по technet.microsoft.com с комментарием:
Цитата:

здесь можно посмотреть как реализовать подписку на события файловой системы, чтобы команда выполнялась например сразу при появлении файла (без всяких периодических проверок) по сигналу от операционной системы - http://www.techdays.ru/videos/1033.html
(http://social.technet.microsoft.com/Forums/ru-RU/scrlangru/thread/36e92440-360f-4ee5-ac5b-bb630b4400e2)
Весьма похоже, что это как раз в духе моего изначального видения темы, но там видео-талмуд на час просмотра, и в третьем часу ночи я его ниасилил, может потом как нибудь вернусь к этому вопросу.

Borland 20.01.2011 12:54

Цитата:

Сообщение от Plague (Сообщение 1735995)
Борланд сказал, что можно и это поправить, но ...

Был неправ! :ржать:
На самом деле всё даже не просто, а ещё проще:
FileChronizer2.cmd
Код:

SET "LOCALFOLDER=d:\Temp\0000"
SET "REMOTEFOLDER=\\Server\Share"

pushd "%LOCALFOLDER%" ||exit

:INCEPTION
xcopy * "%REMOTEFOLDER%" /M /E /H /R /Y /Q /Z
1>nul 2>&1 ping -n6 localhost
goto INCEPTION

Этот код копирует именно содержимое %LOCALFOLDER% в %REMOTEFOLDER% с соблюдением структуры. Причём не всё содержимое, а только то, для которого установлен атрибут "архивный". И скопировав снимает атрибут. :devil:
Данный вариант скрипта пожалуй что даже легче изначального...

Borland 20.01.2011 15:11

Полевые испытания показали: на каталоге с 2496 файлов и 1283 папок (общим размером ~85Mb) на моей рабочей (довольно слабой) машине команда xcopy отрабатывает "вхолостую" (когда собственно копировать нечего) за ~45 сек. Не реалтайм, конечно, но довольно приемлемо...

Plague 21.01.2011 20:59

Короче, устаканилось все ещё и установкой тулзы FTPDrive и привязкой Борландовского скрипта последней версии к нему. ибо по самбе большое количество файлов обзирать на удаленой шаре - убийству подобно.

это для "полноты картины".

скорость обновления/добавления изменений на удаленке - от пары до 40 секунд (зависит от того в каком месте в момент локального обновления находится выполнение скрипта). Обегать скрипту приходится 3100 файлов в 180 каталогах.

SergikS 23.01.2011 07:30

Почитав данную тему, я несколько призадумался. А чем собссно Вам rsync не нравиться? Скорость копирования выше, чем по ftp. Синхронизация папок производится почти мгновенно. Да нужно по крону или как-то там еще его запускать, но ведь этот метод в РАЗЫ быстрее когда просто КОПИРУЕШЬ гигабайты. Про синхронизацию лучше помолчу.
Цитата:

Сообщение от Plague (Сообщение 1736118)
. Обегать скрипту приходится 3100 файлов в 180 каталогах.

Приблизительно похожее количество у меня по ночам rsync синхронит.

Borland 23.01.2011 09:39

Цитата:

Сообщение от SergikS (Сообщение 1736257)
чем собссно Вам rsync не нравиться?

Тем хотя бы, что вычисляет контрольные суммы. Это сразу увеличивает время синхронизации на порядок, а то и на два...
Собственно, у меня была мысль о
Цитата:

Сообщение от Borland (Сообщение 1735895)
"резидентный" скрипт, который постоянно пересчитывает в цикле CRC для файлов каталога, и при изменении запускает копирование в сетевой каталог

Ничего сложного. По идее, контрольная сумма CRC менее надёжна, чем используемая rsync MD4, но зато и считается намного шустрее... Одно большое НО: время выполнения синхронизации. В "сейчасном" варианте это порядка 40 секунд на цикл. С простейшими контрольными суммами будет порядка 10 минут (и более).

BorLase 06.02.2011 21:00

Plague, а SyncToy не смотрел?

Plague 06.02.2011 21:41

BorLase, ключевое слово "АВТОМАТИЧЕСКАЯ".
А просто синхронизилок - как грязи. Тот же Тотал Коммандер делает это наигениальнейше. Но руками. А если речь о ручном запуске, так мне, извините, проще тогда уж руками просто перекопировать то что нужно и не морочится с чтением/сравнением..

BorLase 06.02.2011 22:03

судя по описанию, FolderWatch именно то, что надо

Цитата:

Unlike other backup program that will run only on demand or at defined schedule, Folder Watch guards your files all the time.

Folder Watch does this by monitoring a given number of folders on your hard drive like your Windows folder or your My Documents' folder, etc. It keeps polling these as long as the computer is on. Any time a change is detected, no matter how minute, Folder Watch will automatically make a backup copy and place it in a designated folder.

All of this is done seamlessly in the background while you work, there are no programs to launch or extra buttons to push. Folder Watch starts up and loads automatically with Windows and then sits out of the way minimized in the system tray watching your tagged folders for changes.

If you do not want to change your normal work routine one bit but still need flawless backups always available than Folder Watch is program for you.
ЗЫ: не удержался, опробовал - аккурат, что требовалось. один минус - цена вопроса 25 вечнозеленых ;)

BorLase 22.02.2011 20:28

кстати, наткнулся вот еще на File and Folder Watcher - по ходу, полностью аналогичный продукт (даже по финансам)


Часовой пояс GMT +4, время: 13:30.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.