SFTP/FTPS/SCPを使ったファイル転送ができるWindows向けのツール「WinSCP」は、GUI画面での操作が一般的ですが、コマンドを使った操作もできるのをご存じでしょうか。
そこでここでは、WinSCPバージョン5.1.3を使って、WinSCPをコマンドで操作する方法を紹介します。
目次
WinSCPのコンソールモードの起動
WinSCPをコマンドで操作するときは、コマンドプロンプトを起動してWinSCPのインストールフォルダーにある「WinSCP.com」を実⾏します。
すると、WinSCPがコンソールモードで起動します。
コンソールモードで利用可能なコマンドの一覧は、以下のとおりです。
コマンドの多くは、WindowsやLinuxで使うftpコマンドと似ているので、それらを使ったことがあるなら、操作に迷くことなく利用できるでしょう。
WinSCPのコンソールモードで使用できるコマンドは、以下の公式ホームページでも確認できます。
http://winscp.net/eng/docs/scripting#commands
WinSCPのコンソールモードの使い方
リモートマシンへログイン
たとえば「192.168.1.100」というホストに「hoge」というユーザーでログインする手順は、次のとおりです。
winscp> open [email protected]
サーバを探索中・・・
サーバに接続しています・・・
認証しています・・・
ユーザ名"hoge" を使用中
パスワード(P):*********
認証されました
セッションを開始しています・・・
セッションを開始しました
アクティブ セッション: [1] [email protected]
ファイルのダウンロード
たとえば、リモートディレクトリ「/home/hoge/temp」内にあるすべてのdatファイル(拡張⼦が.datのファイル)を、ローカルディレクトリ「E:myfolder」にダウンロード(get)する手順は、次のとおりです。
winscp> cd temp
/home/hoge/temp
winscp> 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
winscp> lcd E:myfolder
E:myfolder
winscp> 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)する手順は、次のとおりです。
winscp> lcd E:myfolder
E:myfolder
winscp> 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
winscp> cd temp
/home/hoge/temp
winscp> 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:myfolderwork」と、リモートディレクトリ「/home/hoge/temp/work」を比較し、リモートディレクトリ側を更新する手順は、次のとおりです。
リモートディレクトリ側を更新するには、以下のようにコマンドを実行します。
synchronize remote <ローカルディレクトリ> <リモートディレクトリ>
ローカルディレクトリ側を更新するには、以下のようにコマンドを実行します。
synchronize local <ローカルディレクトリ> <リモートディレクトリ>
winscp> cd work
/home/hoge/temp/work
winscp> lcd work
E:myfolderwork
winscp> 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
winscp> synchronize remote E:myfolderwork /home/hoge/temp/work
比較中...
ローカル 'E:myfolderwork' => リモート '/home/hoge/temp/work'
同期中...
ローカル 'E:myfolderwork' => リモート '/home/hoge/temp/work'
E:...work10m_36.html | 10240 KB | 38376.0 KB/s | binary | 100%
E:...work10m_37.html | 10240 KB | 37382.1 KB/s | binary | 100%
E:...work10m_38.html | 10240 KB | 38504.4 KB/s | binary | 100%
E:...work10m_39.html | 10240 KB | 37966.6 KB/s | binary | 100%
E:...work10m_40.html | 10240 KB | 38530.1 KB/s | binary | 100%
ファイルの⾃動同期
「keepuptodate」コマンドを使用すると、ローカルディレクトリ内を監視し、更新されたファイルを⾃動的にリモートディレクトリにアップロードすることができます。
たとえば、ローカルディレクトリ「E:myfolderwork」と、リモートディレクトリ「/home/hoge/temp/work」を⾃動同期する手順は、次のとおりです。
winscp> keepuptodate E:myfolderwork /home/hoge/temp/work
変更を監視しています。終了するには Ctrl-C を押してください...
'E:myfolderwork'のサブ ディレクトリをスキャン中...
1 ディレクトリの変更を監視中...
'E:myfolderwork'に変更が見つかりました
ローカル 'E:myfolderwork' => リモート '/home/hoge/temp/work'
E:...work10m_46.css | 10240 KB | 34370.5 KB/s | binary | 100%
ユーザによって終了しました。
WinSCPのスクリプト機能
スクリプト機能については、ここでは詳しくは触れませんが、複数ディレクトリへのアップロードなど、より複雑な処理を⾃動化することもできるようです。
あとがき
コンソールモードを使いこなせば、WinSCPでのファイル転送をより効率よく行うことができそうです。