LPF Landing Page Framework

Используем WinSCP для синхронизации файлов по FTP

Настраиваем WinSCP на автоматическое обновление файлов удаленного сервера.

Использование FTP

Как правило, обновление/добавление/удаление файлов на сервере приходится выполнять в ручном режиме по FTP. Сам процесс несложный:

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

WinSCP позволяет выполнять синхронизацию каталогов по разным критериям, для нас подходит вариант сравнение по времени файлов. Причем можно выполнять синхронизацию: двустороннюю (сервер ⇆ локальный компьютер), на удаленный сервер, на локальный компьютер.

Пример работы WinSC

Командный режим поддерживает выполнение сценариев. То есть достаточно один раз задать все нужные параметры в файле сценария.

Постановка задачи

Итак, пусть у нас есть WinSCP. Обновлять будем на удаленный сервер по FTP. Обновлять будем только новые файлы в каталогах

Пусть WinSCP располагается в C:\Programs\WinSCP\WinSCP.exe, а файлы для загрузки в D:\xampp\htdocs\landing\.

Вначале создадим bat-файл, в котором будет выполнен запуск WinSCP в нужном режиме.

Дальше у нас есть два варианта использования WinSCP. Первый — «классический» при котором используется отдельный текстовый файл с командами для WinSCP. Второй вариант — использовать эти команды в bat-файле.

Рассмотрим каждый вариант отдельно.

Первый способ: отдельный файл с командами WinSCP

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

Файл scp_sync.bat

start C:\Programs\WinSCP\WinSCP.exe /console /script=D:\xampp\htdocs\landing\scp_sync.txt

В файле scp_sync.txt будет размещен сценарий.

Файл scp_sync.txt

option batch abort
option confirm off

open ftp://ЛОГИН:ПАРОЛЬ@СЕРВЕР

synchronize remote -criteria=time d:\xampp\htdocs\landing\lpf-core\ /lpf-core
synchronize remote -criteria=time d:\xampp\htdocs\landing\lpf-content\ /lpf-content
synchronize remote -criteria=time d:\xampp\htdocs\landing\assets\ /assets

exit

Команда synchronize непосредственно выполняет синхронизацию. WinSCP будет сравнивать файлы по времени -criteria=time.

Документация по синхронизации доступна на отдельной странице.

Особо отмечу ключ -delete, который разрешает удалять файлы, отсутствующие локально. С его помощью можно получить полную копию каталогов.

Можно оставлять окно WinSCP открытым, если убрать из сценария команду exit.

Второй способ: всё в одном bat-файле

В этом варианте нет дополнительного файла, поэтому он проще для управления. Но, вместе с тем, он будет более сложный по синтаксису. Смысл этого варианта в том, что WinSCP позволяет запускать себя со специальным ключом /command, после которого и идут команды, которые мы вынесли как в первом варианте.

Каждая команда должна быть заключена в скобки «"», а переносы строк заканчиваться символом «^». Последняя строчка должна быть без этого символа. Кроме того, каждую строчку нужно отделять табулятором или пробелом в начале строки.

Вот готовый код bat-файла (имя его произвольно), например для синхронизации assets-каталога (assets.bat).

C:\Programs\WinSCP\WinSCP.exe /command ^
	"option confirm on" ^
	"option batch abort" ^
	"open ftp://ЛОГИН:ПАРОЛЬ@СЕРВЕР" ^
	"synchronize remote -criteria=time ..\assets\ /assets"

Обратите внимание, как задан локальный каталог: ..\assets\. То есть это не абсолютный путь на компьютере, а относительный. В данном примере assets.bat располагается в подкаталоге _sync локальной копии LPF.

/landing/
	
	_sync/
		assets.bat
	
	assets/
		css/
		...
		
	...	и т.д.

Каталог для bat-файлов может быть произвольным, в файле он нигде не прописан.

Если нужно синхронизировать несколько каталогов сразу, то указываем их отдельной строкой, не забывая про символ «^». Например:

C:\Programs\WinSCP\WinSCP.exe /command ^
	"option confirm on" ^
	"option batch abort" ^
	"open ftp://ЛОГИН:ПАРОЛЬ@СЕРВЕР" ^
	"synchronize remote -criteria=time ..\assets\ /assets" ^
	"synchronize remote -criteria=time ..\lpf-core\ /lpf-core" ^
	"synchronize remote -criteria=time ..\lpf-content\ /lpf-content"

В этом примере обновляются каталоги assets, lpf-core и lpf-content.

Итого

С помощью WinSCP можно обновлять не только сайты LPF, но и вообще любая синхронизация с удаленным сервером.


Tweet

О проекте

Landing Page Framework упрощает создание целевых страниц, избавляя вебмастера от массы рутинных операций. Фреймворк обладает мощным ядром, способным решать сложные задачи. Сайты, созданные в LPF, будут работать с очень высокой скоростью даже на слабых серверах.

Контакт