WinSCPをコマンドで操作する方法

WinSCPは、SFTP/FTPS/SCPに対応した定番のファイル転送ツールです。WinSCPはGUIでの操作が一般的ですが、コンソールモードでのコマンドによる操作機能や、スクリプト機能(バッチ処理機能)も備えています。

コンソールモードでは「open」「get」「put」などのコマンドで、ファイルの送受信やディレクトリ作成などの処理を実⾏できます。また、WinSCPのコマンドはLinuxなどのftpコマンドと似たコマンド体系となっているため、これらに慣れている方であればすぐに使いこなせると思います。

ここでは、WinSCPバージョン5.1.3を使って、基本的なコマンド操作方法を紹介します。

コンソールモードの起動

コマンドプロンプトで、WinSCPのインストールフォルダーにある「WinSCP.com」を実⾏すると、WinSCPがコンソールモードで起動します。

コンソールモードで利用可能なコマンドの一覧は、以下のとおりです。

使用可能なコマンドは、以下の公式ホームページでも確認できます。
http://winscp.net/eng/docs/scripting#commands

コンソールモードでの操作例

リモートマシンへログイン

「192.168.1.100」というホストに「hoge」というユーザーでログインする手順を以下に例示します。

open hoge@192.168.1.100
サーバを探索中・・・
サーバに接続しています・・・
認証しています・・・
ユーザ名"hoge" を使用中
パスワード(P):*********
認証されました
セッションを開始しています・・・
セッションを開始しました
アクティブ セッション: [1] hoge@192.168.1.100

ファイルのダウンロード

リモートディレクトリ「/home/hoge/temp」内にあるすべてのdatファイル(拡張⼦が.datのファイル)を、ローカルディレクトリ「E:\myfolder」にダウンロード(get)する手順を以下に例示します。

cd temp
/home/hoge/temp
ls
drwxrwxr-x 2 hoge hoge 4096 Apr 12 5:30:01 2018 .
drwx------ 3 hoge hoge 95 Apr 12 5:29:39 2018 ..
-rw-r--r-- 1 hoge hoge 10485760 Apr 12 5:30:01 2018 10m_1.dat
-rw-r--r-- 1 hoge hoge 10485760 Apr 12 5:30:01 2018 10m_2.dat
-rw-r--r-- 1 hoge hoge 10485760 Apr 12 5:30:01 2018 10m_3.dat
-rw-r--r-- 1 hoge hoge 10485760 Apr 12 5:30:01 2018 10m_4.dat
-rw-r--r-- 1 hoge hoge 10485760 Apr 12 5:30:01 2018 10m_5.dat
lcd E:\myfolder
E:\myfolder
get *.dat
10m_1.dat | 10240 KB | 27221.4 KB/s | binary | 100%
10m_2.dat | 10240 KB | 28479.1 KB/s | binary | 100%
10m_3.dat | 10240 KB | 29338.4 KB/s | binary | 100%
10m_4.dat | 10240 KB | 30116.3 KB/s | binary | 100%
10m_5.dat | 10240 KB | 30330.8 KB/s | binary | 100%

ファイルのアップロード

ローカルディレクトリ「E:\myfolder」内にあるすべてのpngファイル(拡張⼦が.pngのファイル)を、リモートディレクトリ「/home/hoge/temp」にアップロード(put)する手順を例示します。

lcd E:\myfolder
E:\myfolder
lls *.png
2018/04/12  05:30        10,485,760 10m_41.png
2018/04/12  05:30        10,485,760 10m_42.png
2018/04/12  05:30        10,485,760 10m_43.png
2018/04/12  05:30        10,485,760 10m_44.png
2018/04/12  05:30        10,485,760 10m_45.png
cd temp
/home/hoge/temp
put *.png
10m_41.png                |       10240 KB | 34486.6 KB/s | binary | 100%
10m_42.png                |       10240 KB | 37450.6 KB/s | binary | 100%
10m_43.png                |       10240 KB | 37062.8 KB/s | binary | 100%
10m_44.png                |       10240 KB | 36905.3 KB/s | binary | 100%
10m_45.png                |       10240 KB | 37213.1 KB/s | binary | 100%

ディレクトリの同期

「synchronize」コマンドを使用すると、ローカルディレクトリとリモートディレクトリの内容を⽐較し、更新されたファイルのみを転送することができます。

ここでは、ローカルディレクトリ「E:\myfolder\work」と、リモートディレクトリ「/home/hoge/temp/work」を比較し、リモートディレクトリ側を更新する手順を例示します。

Memo

リモートディレクトリ側を更新するには、以下のようにコマンドを実行します。
synchronize remote <ローカルディレクトリ> <リモートディレクトリ>
ローカルディレクトリ側を更新するには、以下のようにコマンドを実行します。
synchronize local <ローカルディレクトリ> <リモートディレクトリ>

cd work
/home/hoge/temp/work
lcd work
E:\myfolder\work
lls
2018/04/12  05:30        10,485,760 10m_36.html
2018/04/12  05:30        10,485,760 10m_37.html
2018/04/12  05:30        10,485,760 10m_38.html
2018/04/12  05:30        10,485,760 10m_39.html
2018/04/12  05:30        10,485,760 10m_40.html
synchronize remote E:\myfolder\work /home/hoge/temp/work
比較中...
ローカル 'E:\myfolder\work' => リモート '/home/hoge/temp/work'
同期中...
ローカル 'E:\myfolder\work' => リモート '/home/hoge/temp/work'
E:\...\work\10m_36.html   |       10240 KB | 38376.0 KB/s | binary | 100%
E:\...\work\10m_37.html   |       10240 KB | 37382.1 KB/s | binary | 100%
E:\...\work\10m_38.html   |       10240 KB | 38504.4 KB/s | binary | 100%
E:\...\work\10m_39.html   |       10240 KB | 37966.6 KB/s | binary | 100%
E:\...\work\10m_40.html   |       10240 KB | 38530.1 KB/s | binary | 100%

ファイルの⾃動同期

「keepuptodate」コマンドを使用すると、ローカルディレクトリ内を監視し、更新されたファイルを⾃動的にリモートディレクトリにアップロードすることができます。

ここでは、ローカルディレクトリ「E:\myfolder\work」と、リモートディレクトリ「/home/hoge/temp/work」を⾃動同期する手順を例示します。

keepuptodate E:\myfolder\work /home/hoge/temp/work
変更を監視しています。終了するには Ctrl-C を押してください...
'E:\myfolder\work'のサブ ディレクトリをスキャン中...
1 ディレクトリの変更を監視中...
'E:\myfolder\work'に変更が見つかりました
ローカル 'E:\myfolder\work' => リモート '/home/hoge/temp/work'
E:\...\work\10m_46.css    |       10240 KB | 34370.5 KB/s | binary | 100%
ユーザによって終了しました。

スクリプト機能

スクリプト機能については、ここでは詳しくは触れませんが、複数ディレクトリへのアップロードなどの複雑な処理を⾃動化することができます。

まとめ

コンソールモードを使いこなせば、WinSCPでのファイル転送をより効率よく行うことができそうです。

スポンサーリンク