На работе появилась задача настроить синхронизацию определенных папок (локальных) с точно такими же папками на удаленном сервере. У меня на руках были доступы к удаленной папке и большое желание автоматизировать все это.
В начале была мысль настроить FTP клиент менеджеру, который собственно должен следить за актуализацией каталогов, после чего менеджер сам бы проверял и синхронизировал каталоги. Но возникло много противоречий, менеджер может забЫть, а может забИть. В общем решено было настроить автоматическую синхронизацию.
Не долго я искал инструмент для поставленной задачи, в основном попадались платные программы, причем их стоимость была от 10К и выше, такие варианты сразу отметались. На одном из форумов нашел упоминание про WinSCP, это ftp клиент с возможностью синхронизации. Программа бесплатна, на родном языке, что еще нужно для счастья? Решил попробовать…
Скачать WinSCP клиент для Windows(размер файла - 5.91 Mb)
Установил программу, запустил, добавил новое подключение и подключился к удаленному каталогу
После подключения, моему взору предстал удобный, двухпанельный файловый менеджер. На одной стороне я открыл локальную папку с нужными каталогами, на другой стороне открыл удаленную папку
Для начала синхронизации нужно выбрать пункт меню «Команды» — «Синхронизация» или с помощью горячих клавиш Ctrl+S
Выбрав направление синхронизации и указав остальные параметры, жмем «ОК» и наслаждаемся. Все работает отлично, очень шустро и стабильно. В принципе, можно было бы все настроить и заставить менеджера пару раз в час нажимать на кнопку «Синхронизация», но это тупиковый путь… Нужно все по максимуму автоматизировать.
Совершенно случайно узнал что эта программа умеет работать с командной строкой, а настроить автоматическую синхронизацию на самом деле можно за 2 минуты! Это как раз то, что мне нужно.
Для начала нужно создать текстовый фал с настройками для подключения, вот как он выглядит в моем случае:
1 2 3 4 5 6 7 8 9 10 |
option batch on option confirm off # open ftp connection # synchronize files from server synchronize -criteria=size -transfer=binary local C:\temp\BAT\synchro\KMS\ / exit |
Соответственно, вышеуказанные значения меняете на свои:
user — имя пользователя для подключения к FTP;
password — пароль для пользователя;
ftpserver — адрес сервера, к которому подключаемся;
C:\temp\BAT\synchro\KMS\ — путь к локальной папке;
/ — путь к удаленной папке (в моем случае корневая папка).
Вносим свои значения и сохраняем с именем sync-config.txt (ну или любое другое название на ваше усмотрение)
Теперь нужно создать второй файл, который будет запускать синхронизацию. Создайте файл synhro.bat и откройте его с помощью блокнота, после чего внесите в него следующую информацию:
1 |
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /script=C:\temp\BAT\synchro\sync-config.txt |
первая половина — путь к установленной программе, обязательно проверьте чтобы он был правильным, во второй части файла путь к файлу конфигурации, который мы с вами уже создали. После сохранения, у вас в каталоге должно появиться два файла
Запустите файл synhro.bat и если все вышеописанное вы сделали правильно, должна начаться синхронизация, выглядит это примерно так:
Отлично! Теперь сверим каталог на FTP и каталог который синхронизировался у вас на компьютере. В моем случае все синхронизировалось успешно! Уверен что и у вас все получится так же.
И так, был создан файл, при запуске которого автоматически синхронизируется нужный нам каталог. Теперь осталось добавить этот файл в запуск по расписанию, с запуском каждые 30 минут, например. Для этого открываем «Планировщик заданий» и создаем новое задание. Не буду описывать создание нового задания в планировщике, все там просто и понятно, акцентирую внимание только на настройке триггера (время запуска задания), для запуска каждые 30 минут, настроить вам его нужно как на картинке
На это всё! Надеюсь что расписал все подробно. Но если вдруг какой то момент остался непонятным пишите в комментарии, обещаю что смогу вам помочь.