WinScpをコマンドラインから使う

サーバへのファイルアップロードやダウンロードに欠かせないセキュア通信のWinSCPですが、いつもは画面からピコピコとやってたが、どうやらコマンドラインからの実行もサポートしている模様。

はうつー

コマンドラインで以下を実行すると対話形式でWinSCPスタート
WinSCPフォルダまでパスを設定している場合)

>winscp
winscp> ←インタラクティブシェル開始

対話式で使えるコマンドは以下〜

コマンド 実行処理
call 任意のリモートコマンドを実行
cd リモートディレクトリの変更
chmod リモートファイルの権限を変更
close セッションを閉じる
exit 全てのセッションを閉じプログラムを終了する
get リモートからローカルにファイルをダウンロード
help ヘルプを表示
keepuptodate ローカルディレクトリの変更をリモートに反映
lcd ローカルディレクトリを変更
lls ローカルディレクトリの内容を表示
ln リモートにシンボリックリンクを作成
lpwd ローカルディレクトリの表示
ls リモートディレクトリの内容を表示
mkdir リモートディレクトリを作成
mv リモートファイルを削除または名前変更
open サーバに接続
option スクリプトオプションの値を設定/表示
put ローカルからリモートにファイルをアップロード
pwd リモートディレクトリの表示
rm リモートファイルを削除
rmdir リモートディレクトリを削除
session 接続しているセッションの表示またはアクティブなセッションの選択
synchronize リモートとローカルのディレクトリを同期

また、スクリプトファイルを指定することによって、あらかじめ決められたルーチンを実行することも可能。

コマンドラインからのスクリプト実行例
winscp <session> /script=hoge.script

このはあらかじめWinSCPで保存しておいた接続セッション名ですので、スクリプトの中で新たに接続する場合は不要です。

リモートホストへアップロード

例えば、単純にサーバへ対してファイルをアップロードしたい場合
まずは以下のようなスクリプトを作成
upload.script

open hoge:hogehoge@192.168.0.99
put "C:\hoge.txt" /home/hoge/data/hoge.txt
close
exit

スクリプトを作ったら以下のようにSCPコマンドを実行

>winscp /script=97Server.script

これで「hoge.txt」が192.168.0.99サーバの「/home/hoge/data/」以下にアップロードされます。

同期を取る

synchronizeを使えばリモートのフォルダ内容をローカルへ同期、ローカルのフォルダ内容をリモートへ同期。なんてこともできます。

リモートのフォルダ内容をローカルへ同期

スクリプトファイル例

open hoge:hogehoge@192.168.0.97
cd /home/hoge/data
lcd "C:\data"
synchronize remote
close
exit
ローカルのフォルダ内容をリモートへ同期

スクリプトファイル例

open hoge:hogehoge@192.168.0.97
cd /home/hoge/data
lcd "C:\data"
synchronize local
close
exit

その他

Portable executable形式(インストールしなくて実行できるやつ)でやる場合は、どうもコマンドラインから対話形式で実行できないようです。