Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Скрипт для автоматизированной синхронизации каталогов

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Thu May 03, 2007 17:55    Post subject: Скрипт для автоматизированной синхронизации каталогов Reply with quote

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

Задача: есть локальный каталог и сетевой (возможно даже примонтированный как диск). Требуется написать скрипт, который бы выполнял следующие задачи:
1) При запуске синхронизировал содержимое сетевого каталога с локальным. Т.е. все файлы, которые были изменены на в локальном каталоге копировались на сетевой. Копировать нужно именно только изменённые файлы, в целях уменьшения нагрузки на сеть (общий размер под десятки гигов, изменения могут быть в одном-двух файлах).
2. Опционально мог бы делать обратную синхронизацию (сетевой каталог->локальный).
3. Также опционально перед началом работы запрашивать у пользователя подтверждение.

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

Или, если есть утилиты для синхронизации, которые выполнили бы эту задачу, попрошу дать наводку.

Заранее спасибо.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Thu May 03, 2007 19:59    Post subject: Reply with quote

Может, Synchronize It! поможет? У него, вроде, есть режим автоматической работы с командной строки. (Точно не знаю, т.к. очень мало с ним работал, Тотала всегда хватало.)
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Kent



Joined: 14 Dec 2004
Posts: 208

Post (Separately) Posted: Thu May 03, 2007 20:02    Post subject: Reply with quote

Есть консольная программа CopyNew32
http://www.free-pc.hu/pub/dos/allomkez/cpnew32.zip

И ещё SyncBackup. Пожалуй, эта лучше.
http://clx-host.narod.ru/syncbackup/index.htm
Back to top
View user's profile Send private message
GeNtlE



Joined: 16 Dec 2004
Posts: 141
Location: Россия, Чита

Post (Separately) Posted: Fri May 04, 2007 19:29    Post subject: Reply with quote

nnBackup имеет хорошие возможности по синхронизации/резервному копированию каталогов (http://www.nncron.ru/) в связке с nnCron - незаменимая вещь. Консольная, работает с командной строкой.
_________________
Новые версии SM2BT здесь.
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri May 04, 2007 19:57    Post subject: Reply with quote

SyncBackup, судя по всему, подойдёт идеально. После полевых испытаний выясню окончательно.
Спасибо!
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Tou



Joined: 02 Oct 2008
Posts: 13

Post (Separately) Posted: Mon Feb 04, 2013 17:28    Post subject: а средствами TC это можно сделать? Reply with quote

Господа скриптописатели! У меня вопрос такой же как у автора темы, за исключением того, что нельзя использовать никаких внешних программ. Т.е. надо сделать средствами TC и/или штатными средствами Windows 7. в принципе никаких параметров скрипт обрабатывать не должен, все пути к каталогам можно указать прямо в теле скрипта, так как они не будут меняться. Я полагаю, это скрипт из 3-5 строк, но не могу его написать, так как не знаю объектной модели TC. Максимум, что нашел в документации - имена команд для вызова тех или иных окон. Не нашел как "нажимать на кнопки" в этих окнах с помощью скриптов и как передавать параметры встроенным командам TC (хотя надеюсь, что параметры можно передавать так же как и внешним программам - с помощью всяких %n, %L и т.д.). Я думаю, быстро все пойму, увидев описанный скрипт и дальше смогу править его самостоятельно. Буду очень признателен за скрипт (а не советыSmile ).
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Feb 04, 2013 19:21    Post subject: Reply with quote

Tou wrote:
нельзя использовать никаких внешних программ
Консольные программы не требуют установки, если в этом проблема.
Tou wrote:
никаких параметров скрипт обрабатывать не должен, все пути к каталогам можно указать прямо в теле скрипта
Тогда при чём тут Total Commander?
Tou wrote:
Я полагаю, это скрипт из 3-5 строк
Нельзя заранее узнать, когда отработает инструмент синхронизации в ТС, поэтому нужен собственный скриптовый обработчик каталогов. Соответственно, ни о каких 3-5 строках речи не пойдёт.
Tou wrote:
не знаю объектной модели TC
Я тоже не знаю и обхожусь без неё. Кое-что можно тут почерпнуть.
Tou wrote:
Не нашел как "нажимать на кнопки" в этих окнах с помощью скриптов
Можно переходом Tab и нажатием Space/Enter, можно ставить фокус по классу в AHK (но это опять же отдельная программа).
Tou wrote:
как передавать параметры встроенным командам TC
Команд, воспринимающих параметры, не так много.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Tou



Joined: 02 Oct 2008
Posts: 13

Post (Separately) Posted: Tue Feb 05, 2013 01:40    Post subject: Reply with quote

Flasher wrote:
Консольные программы не требуют установки, если в этом проблема.
Проблема не в этом. Это будет часть другого скрипта. Во-первых, мне нужен пример решения этой конкретной задачи, чтобы разобраться. Во-вторых, синхронизилка TC уже зарекомендовала себя как надежная, а тратить время на исследование безглючности других программ мне не хочется. Ибо речь идет о моих данных.

Flasher wrote:
Тогда при чём тут Total Commander?
при том что надо использовать его функцию Synchronize dirs

Flasher wrote:
Нельзя заранее узнать, когда отработает инструмент синхронизации в ТС, поэтому нужен собственный скриптовый обработчик каталогов
. Не нужен. Запускаем скриптом синхронизацию и на этом работа желаемого мной скрипта закончится. Через 15 мин (с большим запасом) я вытаскиваю флэшку.

Flasher wrote:
Кое-что можно тут почерпнуть.
Спасибо, попробую. Но мой вопрос подразумевал готовый пример скриптаSmile

Flasher wrote:
Не нашел как "нажимать на кнопки" в этих окнах с помощью скриптовМожно переходом Tab и нажатием Space/Enter, можно ставить фокус по классу в AHK (но это опять же отдельная программа).
Я представляю общие принципы программированияSmile. Но я никогда не взаимодействовал из скриптов с конкретной программой - Total Commander. Что у него там - API, зарезервированные имена классов, формальный протокол передачи данных, синтаксис вызовов? Нужен конкретный пример. На любом языке программирования.

Flasher wrote:
Команд, воспринимающих параметры, не так много.
Увы. Как я вижу, синхронизация к ним не относится. Ну да фиг с параметрами, интереснее как "поставить стрелочки" (направление синхронизации) для тех файлов, у которых не совпадает размер и как "нажать на кнопку" (отправить в окно синхронизации нужное количество табов и прочих хоткеев). Если это вообще возможно...
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Feb 05, 2013 10:04    Post subject: Reply with quote

Tou wrote:
тратить время на исследование безглючности других программ мне не хочется. Ибо речь идет о моих данных.
От проблем никто не застрахован, поэтому в памятке и написано о предварительных тестах.
Tou wrote:
Не нужен. Запускаем скриптом синхронизацию и на этом работа желаемого мной скрипта закончится...
... интереснее как "поставить стрелочки" (направление синхронизации) для тех файлов, у которых не совпадает размер
Вот тут и не получится. Узнать, когда закончится сравнение скрипт опять же не сможет. Хэндлов построчно инструмент синхронизации не предоставляет. Отловить маркеры также не получится.
Копать в этом направлении можно только, непосредственно контактируя с Гислером (если он вообще готов необходимую информацию предоставить).
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Tou



Joined: 02 Oct 2008
Posts: 13

Post (Separately) Posted: Tue Feb 05, 2013 10:32    Post subject: Reply with quote

Flasher wrote:
Вот тут и не получится. Узнать, когда закончится сравнение скрипт опять же не сможет. Хэндлов построчно инструмент синхронизации не предоставляет. Отловить маркеры также не получится.
Копать в этом направлении можно только, непосредственно контактируя с Гислером (если он вообще готов необходимую информацию предоставить).
А проблема именно в том, когда закончится сравнение? так как файлов не больше сотни, можно просто подождать 60 секунд. вот еще интересно - если из скрипта вызывается какая-то функция, имеющая в интерфейсе TC окно, (например, синхронизация) то по идее юзер должен видеть само окно и все его атрибуты - работающие кнопки, прогресс-бары и т.д. Или я не прав?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Feb 05, 2013 12:04    Post subject: Reply with quote

Tou wrote:
Как я вижу, синхронизация к ним не относится.
syncopen имя_шаблона
%COMMANDER_EXE% /O /S=S:имя_шаблона
Tou wrote:
А проблема именно в том, когда закончится сравнение?
Нет. Я же написал про маркеры. Нельзя программно пройтись по списку и сменить состояние.
Tou wrote:
если из скрипта вызывается какая-то функция, имеющая в интерфейсе TC окно, (например, синхронизация) то по идее юзер должен видеть само окно и все его атрибуты - работающие кнопки, прогресс-бары и т.д.
Естественно, вызывается стандартная команда cm_FileSync, вызывающая окно синхронизации ТС. Только что с того?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Tou



Joined: 02 Oct 2008
Posts: 13

Post (Separately) Posted: Thu Feb 07, 2013 02:37    Post subject: Reply with quote

Flasher wrote:
syncopen имя_шаблона
%COMMANDER_EXE% /O /S=S:имя_шаблона


что такое шаблон синхронизации? где прочитать? может, если шаблон можно сделать, то и скрипт не понадобится?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Feb 07, 2013 09:45    Post subject: Reply with quote

Tou,

_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Tou



Joined: 02 Oct 2008
Posts: 13

Post (Separately) Posted: Thu Feb 07, 2013 23:49    Post subject: Reply with quote

ясно. даже не замечал эту кнопочку никогда! похоже, что опция вроде select left to write for newer files only при создании шаблона не предусмотренаSad
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10255
Location: Россия, Саратов

Post (Separately) Posted: Fri Feb 08, 2013 00:19    Post subject: Reply with quote

Tou
Во-первых, не надо цитировать то, что объектом цитирования вообще не должно являться. Во-вторых, прошу обратить внимание, на каком языке предполагается общение на форуме (это касается и названий существующих или гипотетических опций). См. правила форума. Оверквотинг удалён. И лучше излагать свои мысли без злоупотребления английской терминологией — обсуждение будет продуктивнее. В частности, выяснение, что там где предусмотрено.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group