Windows用のFTP/SCP用ソフトとして割と有名なものにWinSCPというソフトがあります。エクスプローラー風にサーバーのフォルダにアクセスし、ファイルを配置したり、ミラーリングアップロードなどが行えるという優れものソフトです。
で、このソフトにはスクリプトでの動作という機能があります。コマンドラインオプションとして/script=[スクリプトファイル名]
を指定してやると、スクリプトファイルを読み込み、定型的な動作を行ってくれます。開発中のプログラムファイルをサーバーに自動アップロードするバッチなどが組めるので良い感じです。
たとえば、以下のファイルは開発用テストサーバーにアクセスし、ローカルの特定フォルダと同期を行うスクリプトです(なお、.gitフォルダについては、アップロードしてしまっては困るので、除外しています)。開発中すぐに呼び出せるようにしておくと、デプロイの手間が省けますね。
@echo off
set LOCAL="%~dp0"
set REMOTE="[リモートサーバー上で、ファイルを展開するフォルダ]"
set SESSION="[リモートサーバーの名前(あらかじめ一度WinSCPをGUIで起動しておき、接続先としてサーバーの情報を保存しておく必要があります)]"
winscp.exe /script=upload.txt /parameter %SESSION% %LOCAL% %REMOTE% /console
option exclude ".git\"
open %1%
lcd %2%
cd %3%
synchronize remote -delete -criteria=time
exit
upload.txtの引数は、次の通り
- 第一引数:リモートサーバーの名前
- 第二引数:ローカルフォルダのパス
- 第三引数:リモートサーバー上でファイルをアップロードするディレクトリのパス
コマンドラインオプションで引数を指定するときは、/parameter
オプションを利用します。
一つだけ注意する点としては、スクリプトコマンドのsynchronize
コマンド。リモートサーバーのファイル構成をローカルフォルダの構成にあわせたい場合はremote、逆の場合はlocalを第二引数に指定します。間違えるとローカルフォルダ上にせっかく作ったファイルやフォルダが消されてしまうことになるので注意してください。