Xpoint
   [напомнить пароль]

Программа для автокопирования файлов с Windows на удаленный сервер

Метки: [без меток]
2007-10-16 00:11:25 [обр] Дмитрий Котеров(6/912)[досье]

Существует ли в природе утилита, которая делает следующее:

  1. Папку на локальном windows-диске объявляем как "источник".
  2. Этой папке ставится в соответствие директория на удаленной unix-машине, содержащая ее копию.
  3. Каждый раз, когда в windows-папке изменяется какой-то файл (или добавляется, или удаляется), изменения немедленно передаются на unix-машину.
  4. Задержка при передаче должна быть низкой (1-3 секунды), это существенно (если бы не было существенно, подошел бы и rsync). Пусть будет канал 400 мбит, пинг 30 мс.

Т.е. это фактически realtime-зеркалирование в одну сторону windows-папки на unix-машину.

Я знаю, что в windows существует механизм, позволяющий "подписывать" процесс на изменение определенной директории (аналог inotify в linux). Вероятно, на нем и должна базироваться эта программа.

спустя 1 минуту [обр] Дмитрий Котеров(6/912)[досье]
Да, это должно быть именно копирование, а не сетевая ФС. Например, ни samba, ни NFS не подходят. Причем копирование только в одну сторону (в обратную отслеживать не надо).
спустя 2 часа 45 минут [обр] Алексей Севрюков(6/1280)[досье]
Тоже очень нужна такая штука.
спустя 59 минут [обр] Роман Чемисов(0/327)[досье]
Что-то подсказывает мне, что вам, ребята, самим вполне по силам написать такую утилиту на Perl. Сам не пробовал, но может поможет Win32::ChangeNotify.
спустя 27 минут [обр] Давид Мзареулян(14/1003)[досье]
спустя 9 часов [обр] Fd(0/35)[досье]
Я бы использовал scp из набора OpenSSH для windows + WMI
спустя 1 день 5 часов [обр] Spectrum2(0/26)[досье]
Дмитрий Котеров[досье]Microsoft Groove? Webdrive?
спустя 12 дней [обр] Дмитрий Котеров(6/912)[досье]
Давид Мзареулян[досье]
Супер, это как раз то, что нужно!!!
Правда, работает медленновато при начальной синхронизации, но это уже второй вопрос.
Спасибо!
спустя 17 минут [обр] Дмитрий Котеров(6/912)[досье]

А, не, рано я обрадовался:

WinSCP will only detect that something has changed in the directory; it won’t know what the specific change was. So it must perform a full synchronization of that directory. As a result it may upload not only the file changed just at the moment but any file that is out of sync.

Т.е. если у меня в директории 200 файлов, и я изменяю всего один, она зачем-то начинает синкать все 200 файлов. Это жутко медленно. Так что, увы, не годится. Почему они так сделали - лично я ума не приложу. Не могли, что ли, таймстемпы хранить на локальной машине и сравнивать просто?

спустя 6 минут [обр] Дмитрий Котеров(6/912)[досье]
SftpDrive тоже не подходит, т.к. он не умеет кэшировать локально файлы, а забирает каждый раз. В результате вести глобальный поиск по проекту становится невозможно.
спустя 24 минуты [обр] Дмитрий Котеров(6/912)[досье]
Ну а WebDrive - это вообще ужас. Мало того, что не кэширует нормально, он еще и машину мне намертво подвесил, когда связь порвалась.
MS Groove не смотрел пока - шибко здоровый он...
спустя 10 часов [обр] Давид Мзареулян(14/1003)[досье]
Т.е. если у меня в директории 200 файлов, и я изменяю всего один, она зачем-то начинает синкать все 200 файлов. Это жутко медленно. Так что, увы, не годится. Почему они так сделали - лично я ума не приложу. Не могли, что ли, таймстемпы хранить на локальной машине и сравнивать просто?
Она проверяет все файлы в каталоге (по заданным критериям), но перекачивает только изменённые. Критерии — разница во времени последнего изменения, размер файла… там это где-то настраивается. Если она по любому чиху начинает качать все файлы из каталога — возможно, часы на сервере и на клиенте сильно разное время показывают. Тут уже подробнее смотреть надо, в чём дело.
спустя 9 часов [обр] Дмитрий Котеров(6/912)[досье]
Да нет, она, может, и не качает, но на сверку даты файла не сервере и клиенте уходит уйма времени (минимум ping). Вот я и не понимаю, зачем ему каждый раз проверять все файлы, когда он и так локально может определить, какой файл в каталоге изменился.
спустя 47 минут [обр] Давид Мзареулян(14/1003)[досье]

Хм. Вот специально сейчас проверил — изменил в каталоге один из 88 файлов. Он ровно про этот один и написал. Опции:

option synchdelete off
option batch abort
option exclude ".svn/; sync.winscp; .project; .project*; .cache/; .settings/"
open david@site.ru
keepuptodate "C:\....\" /.../

Я вообще при работе задержек не ощущаю.

спустя 54 минуты [обр] Дмитрий Котеров(6/912)[досье]
Может быть, дело в option synchdelete off? Я себе поставил on, чтобы удаляемые файлы на сервере тоже удалялись (это необходимо).
спустя 1 минуту [обр] Давид Мзареулян(14/1003)[досье]
Не знаю. Поэкспериментировать надо.
спустя 27 секунд [обр] Дмитрий Котеров(6/912)[досье]
Проверил. С synchdelete off то же самое.
спустя 2 минуты [обр] Дмитрий Котеров(6/912)[досье]
А какая версия у Вас? У меня - 4.0.5 build 354.
Он пытается закачать ВСЕ файлы в директории при изменении одного, причем пишет рядом с файлом его размер (т.е. передает, похоже, его целиком).
Часы на сервере вроде идут правильно: на сервере Tue Oct 30 22:02:23 GMT 2007, на локале 01:02:25.
спустя 3 минуты [обр] Дмитрий Котеров(6/912)[досье]
Ах, черт... У меня у соединения стоял режим SCP. Поставил SFTP - стало работать, как Вы и описываете.
Powered by POEM™ Engine Copyright © 2002-2005