Синхронизация файлов по FTP

Возникла простая задача — по расписанию сливать с сервера свежие бэкапы на локальную машину. Перепробовав несколько программ, подавляющее число которых платное, остановился на бесплатном варианте с помощью WinSCP. Тем более ничего лишнего ставить не требуется, а эта программа не помешает в повседневной работе даже самому крутому админу, работающему на Windows.

Не все знают, что WinSCP поддерживает работу со скриптами. Воспользуемся этой возможностью для синхронизации файлов по FTP.

Напишем такой простой скрипт и сохраним его в файлик scp_sync.txt

option batch on
option confirm off

# open ftp connection
open ftp://user:password@server

# synchronize files from server
synchronize -criteria=size -transfer=binary local local-path remote-path

exit

Описание всех команд можно найти на сайте, но и так несложно догадаться о их назначении.

Следующие параметры нужно изменить на свои.

  • user — имя пользователя
  • password — пароль
  • server — адрес сервера (IP или домен)
  • local-path — локальный каталог, например C:\Backup
  • remote-path — удаленный каталог, для корня нужно указать /

Можно изменить направление синхронизации, в моём случае local — файлы скачиваются с сервера в локальную папку. Другие допустимые значения: remote — изменения в локальной папке будут залиты на сервер, both — двухсторонняя синхронизация.

Также допустимо поменять критерий определения изменения файлов -criteria=size. Допустимые значения time, size и either — по времени изменения, по размеру, или оба критерия сразу, при этом время изменения будет иметь более высокий приоритет по сравнению с размером.

Есть ещё один полезный параметр -delete для удаления устаревших файлов. В моём случае файлы отсутствующие на сервере будут удалены из локальной папки, то есть мы получим «зеркальную копию».

Полный синтаксис команды synchronize можно найти здесь.

Запуск скрипта осуществляется следующей командной строкой, все пути естественно нужно поменять на свои.

C:\Program Files\WinSCP\WinSCP.exe /console /script=C:\Script\scp_sync.txt

Вставляем эту строчку в Пуск => Выполнить и проверяем, что всё отработало нормально. Если что-то пошло не так, комментируем или удаляем пункт exit в скрипте, и смотрим какая ошибка выдаётся. Для ведения подробного лога в конце командной строки нужно добавить /log=C:\Script\scp_sync.log

WinSCP синхронизирует файлы по FTP в командном режиме

Выполнять его по расписанию можно при помощи обычного планировщика Windows. Приведу порядок действий в Windows 7. Запускаем Планировщик: Панель управления => Система и безопасность => Администрирование => Планировщик заданий, можно несколько проще Пуск => Выполнить => Taskschd.msc

Выбираем пункт меню Действие => Создать программу, на вкладке Общие задаём её произвольное имя. Переходим на вкладку Действия, нажимаем Создать. По кнопке Обзор находим WinSCP.exe, в поле Добавить аргументы вводим /console /script=C:\Script\scp_sync.txt

Добавляем команду синхронизации по FTP в задание Планировщика Windows

На вкладке Триггеры нажимаем Создать и настраиваем время запуска. Поскольку у меня компьютер практически не выключается, устанавливаю Ежедневно, в 4:00

Добавляем время синхронизации по FTP в задание Планировщика Windows

Единственный недостаток WinSCP по сравнению с некоторым платными прогами — то что она не умеет скачивать файлы в несколько потоков. В остальном это отличный бесплатный вариант.

ремонт информационных табло, biz. капитальный ремонт квартир киев Цена: от 899 грн, за метр. Разработка сайтов бишкек подробно.