15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WinSCPを使って特定ディレクトリにファイルを転送する

Last updated at Posted at 2015-02-14

Windows用のFTP/SCP用ソフトとして割と有名なものにWinSCPというソフトがあります。エクスプローラー風にサーバーのフォルダにアクセスし、ファイルを配置したり、ミラーリングアップロードなどが行えるという優れものソフトです。

で、このソフトにはスクリプトでの動作という機能があります。コマンドラインオプションとして/script=[スクリプトファイル名]を指定してやると、スクリプトファイルを読み込み、定型的な動作を行ってくれます。開発中のプログラムファイルをサーバーに自動アップロードするバッチなどが組めるので良い感じです。

たとえば、以下のファイルは開発用テストサーバーにアクセスし、ローカルの特定フォルダと同期を行うスクリプトです(なお、.gitフォルダについては、アップロードしてしまっては困るので、除外しています)。開発中すぐに呼び出せるようにしておくと、デプロイの手間が省けますね。

mirror.bat(実際に実行するバッチファイル)
@echo off
set LOCAL="%~dp0"
set REMOTE="[リモートサーバー上で、ファイルを展開するフォルダ]"
set SESSION="[リモートサーバーの名前(あらかじめ一度WinSCPをGUIで起動しておき、接続先としてサーバーの情報を保存しておく必要があります)]"
winscp.exe /script=upload.txt /parameter %SESSION% %LOCAL% %REMOTE% /console
upload.txt
option exclude ".git\"
open %1%
lcd %2%
cd %3%
synchronize remote -delete -criteria=time
exit

upload.txtの引数は、次の通り

  • 第一引数:リモートサーバーの名前
  • 第二引数:ローカルフォルダのパス
  • 第三引数:リモートサーバー上でファイルをアップロードするディレクトリのパス

コマンドラインオプションで引数を指定するときは、/parameterオプションを利用します。

一つだけ注意する点としては、スクリプトコマンドのsynchronizeコマンド。リモートサーバーのファイル構成をローカルフォルダの構成にあわせたい場合はremote、逆の場合はlocalを第二引数に指定します。間違えるとローカルフォルダ上にせっかく作ったファイルやフォルダが消されてしまうことになるので注意してください。

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?