WinSCPのコマンドでフォルダを同期するようにした

ふとWinSCPの設定などを覗いていたらコマンドラインからの実行もできることが分かったので、差分アップロードをしてくれるバッチファイルを作ってみました。

GUI版のWinSCPでバッチファイルのベースを作ってくれるので、それにsynchronizeコマンドを追加しました。

synchronize.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off

"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
/log="D:\File\Web\Entrance\blog\WinSCP.log" /ini=nul ^
/command ^
"open ftp://[username]:[password]@tszero.sakura.ne.jp/ -rawsettings Utf=1" ^
"synchronize remote D:\File\Web\Entrance\blog\public /home/tszero/www/blog" ^
"exit"

set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
echo Success
) else (
echo Error
)

exit /b %WINSCP_RESULT%

あとはGit Bashから./synchronize.batで起動してやれば更新したファイルだけをアップロードしてくれるようになりました。今までhexo dが途中で止まってしまっていたり、ftp-deployで全ファイルのアップロードをしたりしていましたが今後は最低限のアップロードだけで済むようになりますね。やったぜ。

それでは。