WinScp - консоль арқылы синхрондау

Сайт жасау барысында жұмыс негізінен екі жерде жүргізіледі: серверде немесе локалкада (компьютеріңде). Локалкада отырып файлдарды өзгертіп, содан соң оны серверге құямыз. Айтарлықтай қиын шаруа емес. Өзгерген бірнеше файлдарыңды аласың да FTP клиент арқылы оны серверге құясың.


Ал егер өзгерген файлдар көп болса немесе екі не одан көп программист бір серверде жұмыс жасап жатса қиындықтар тууы мүмкін.

Бірақ бұл мәселенің шешімі бар!
Windows-қа арналған WinScp бағдарлама аркылы сервер мен локалканы байлап қоюға болады екен. Бұл туралы өзім жақында білдім.

Графикалық интерфейс арқылы синхрондау
графикалық интерфейс арқылы синхрондау
Осылай, оп-оңай локалка мен серфердегі файлдарыңызды штатты әдіспен синхрондауға болады. Бірақ жазба ол туралы емес.

Маған керегі консоль арқылы локалдағы және сервердегі файлдары сайкестіру. Бұл әдіс өзіме ең тиімді әрі қолайлы көрінді. Гуглдан бір-екі іздестіру жүргізу арқылы көзіме мына мақалада түсті. Автор бұл мәселені шешудің екі жолы бар дейді.

Біріншісі: .txt форматты файлға командалар тізімін жазып оны кейін .bat форматы аркылы іске асыру.

Файл 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

Файл scp_sync.bat
start C:\Programs\WinSCP\WinSCP.exe /console /script=D:\xampp\htdocs\landing\scp_sync.txt

Бұл әдіс үлкен, күрделі жобаларға қолданған дұрыс деген. Автормен келісем, сәйкестеу алгоритмі үлкен болса, бөліп, бөлек файлдарға жазған жөн.

Екінші әдіс: барлығын .bat фоматты файлға жазу.

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


Аса күрделі емес жобаларға осы әдіс тиімді болады. Ұнаған жері ..\assets\ папкасы локально көрсетілген. Демек проекте синхрондауға арнап папка ашып, соның ішіне .bat файлдарды жазуыма болады. Кейін сол жерден синхрондап отыра бересің. Логин, пароль, аккаунт деп алаңдап жүрмейсің.

Мысал

|-- index.php
|
|--+ page_1
|  |-- index.php
|  |-- action.php
|
|--+ page_2
|  |-- index.php
|  |
|  |--+ step_1
|  |  |-- index.php
|  |  
|  |--+ step_2
|  |  |-- index.php
|  |  
|  |--+ step_3
|  |  |-- index.php
|
|--+ page_3
|  |--- index.php
|
|--+ sinc
|  |-- sinc.bat
|  |-- sinc_local.bat
|  |-- sinc_remote.bat

Жобаның ішкі құрылымы осындай. sinc папка синхрондауға арналған. Серверде sinc папкадан басқа барлығы болу керек.
sinc.bat файлдын ішкі құрылысы (кейін өзгереді)
C:\Program Files\WinSCP\WinSCP.exe /command ^
 "option confirm on" ^
 "option batch abort" ^
 "open ftp://login:[email protected]" ^
 "synchronize both -criteria=time ..\page_1\ /page_1" ^
 "synchronize both -criteria=time ..\page_2\ /page_2" ^
 "synchronize both -criteria=time ..\page_3\ /page_3" ^
 "exit"


C:\Program Files\WinSCP\WinSCP.exe /command ^ — WinScp бағдарламасын /command кілтсөзбен іске қосады. Айтып өтетін жері: C:\Program Files\WinSCP\WinSCP.exe менде консольда істеген жоқ. Сондықтан C:\Program Files\WinSCP-ты windows-тың «переменная среды»-ға қостым. Енді менде C:\Program Files\WinSCP\WinSCP.exe /command ^ деудің орнына winscp /command ^ деймін.

Әр команда бөлек қатарда жазылу керек, Пробел немесе табуляция белгісімен басталу керек, «"» белгісімен қоршалуы керек және соңында «^» белгісімен аяқталу керек. Соңғы катарда «^» белгісі болмау керек.

 "option confirm on" ^
 "option batch abort" ^
 "open ftp://login:[email protected]" ^


Серверге жалғанатын командалар. Логин, пароль және хост осы жерде көресетіледі.
	"synchronize both -criteria=time ..\page_1\ /page_1" ^

Ал мына команда папкаларды синхрондайды. Бізге ең керегі synchronize командасы. Ағылшынша документациясы мында орналасқан. Қысқаша айтып өтсек былай ғо.

	"synchronize турі салыстыру локалдағы папка сервердегі папка" ^

  • түрі — 3 түрі бар:
    • remote — тек қана локалкадан серверге лақтырады
    • local — тек қана серверден локалкаға лақтырады
    • both — ал бұл болса 2 жақты: серверден локалқаға немесе локалкадан серверге (салыстыру арқылы) лақтырады
  • салыстыру қандай белгілері бойынша салыстыру керек: жоғарыда көрсетілген кодта (-criteria=time) уақыт бойынша салыстырады. (файлдардың соңғы өзгертілген уақыты сай келмесе синхрондайды)
  • локалдағы папка синхрондайтын локалдағы папка
  • сервердегі папка синхрондайтын сервердегі папка


	"exit"

winscp-ді жабу.

sinc.bat файлдың соңғы нұсқасы:
winscp /command ^
 "option confirm on" ^
 "option batch abort" ^
 "open ftp://login:[email protected]" ^
 "synchronize both -criteria=time ..\page_1\ /page_1" ^
 "synchronize both -criteria=time ..\page_2\ /page_2" ^
 "synchronize both -criteria=time ..\page_3\ /page_3" ^
 "exit"

sinc.bat — екі жақты тексереді. Егер локалкадағы файл соңғы өзгертілген болса оны серверге жібереді. Ал егер сервердегі файл соңғы өзгертілген болса оны локалкаға лақтырады.

Синхрондау әрекеттері

sinc_local.bat файлдың нұсқасы
winscp /command ^
	"option confirm on" ^
	"option batch abort" ^
	"open ftp://[email protected]:[email protected]" ^
	"synchronize local -criteria=time ..\page_1\ /page_1" ^
	"synchronize local -criteria=time ..\page_2\ /page_2" ^
	"synchronize local -criteria=time ..\page_3\ /page_3" ^
	"exit"

sinc_local.bat — тек серверден локалкаға лақтырады. Бірақ серверге ештеңе кетпейді.
локалкаға синхрондау
sinc_remote.bat файлы
winscp /command ^
 	"option confirm on" ^
 	"option batch abort" ^
 	"open ftp://[email protected]:[email protected]" ^
 	"synchronize remote -criteria=time ..\page_1\ /page_1" ^
 	"synchronize remote -criteria=time ..\page_2\ /page_2" ^
 	"synchronize remote -criteria=time ..\page_3\ /page_3" ^
	"exit"

sinc_remote.bat — тек қана локалкадан серверге лақтырады. Локалкаға ештеңе кетпейді.
серверге синхрондау

Қорытынды

Бұл әрине жалғыз шешім емес, басқа да жолдары көп. Кауіпсіздік мәселесін қарап та шығу керек, себебі логин/пароль ашық жазылып тұрады және бұл әдісті Git, SVN технологияларымен шатастырмау керек, өзгертілген нұсқаларды сақтамайды. Жәй тек қана екі жақты синхрондайды.
Бірақ жеке өзіме осы әдіс қатты ұнады.

  • 0
6 пікір
droidtar
Рахмет! Болашақта керек болып қалар!
kamyrov
Welcome back Houston!) Мақала үшін рахмет, WinSCP-ті өзімнің жұмыстарым үшін жиі қолданамын)
tas362
сенің комбәгің қашан?)
raimbek
комбәгті тездетіңдер )
Тек тіркелген қолданушылар ғана пікір қалдыра алады.