プログラミング支援

    [WinSCP]サーバーにファイルをまとめてアップロード

    サーバーにまとめてファイルをアップロードしたいことってありますよね。

    これってプログラムで書くと意外と面倒なのです。

    サーバーのファイル転送プロトコルは?
    FTPなのか、SFTPなのか、SCPなのか・・・
    (ライブラリは何を使おう)

    パスワードどこに保存しようか?
    (フォーマット決めて、暗号化したファイルの読み書きとか作る?)

    アップしたいパスの途中のフォルダがサーバー側にあるか確認してなかったら作って・・・

    うーん、面倒です。
    しかし、これ WinSCPだとコマンド一行でできちゃいます

    ではやり方を紹介しましょう。

    WinSCPをセットアップ


    まずは、WinSCPを用意しましょう。
    WinSCPは、SCPだけではなく、FTP、SFTPに対応したGUIファイル転送クライアントです。
    FFFTPライクな見た目。

    インストールしたら、
    ・ユーザー
    ・パスワード(パスワードを保存にするにチェック)
    ・サーバー
    の接続情報(このソフトではSessionと呼びます)を保存しておいてください。

    保存名は、ユーザー@サーバー になると思います。
    例えば、user@exsample.com と保存したとします。

    GUIでファイルのアップロードやダウンロードができることを確認してみてください。
    これだけでも、普段使いできるほど便利なソフトです。

    さらに、コマンドラインモードを使って一発アップロードとダウンロードもできるので、その方法について紹介します。

    WinSCPのコマンドラインモード

    WinSCPには豊富なコマンドラインがあります。
    一番かんたんなものだと、コマンドプロンプトで
    “(WinSCPを入れたフォルダ¥)WinSCP” user@exsample.com
    です。
    これで黒窓で対話モードに入ります。
    保存した資格情報で open した状態から始まります。
    パスワードを保存していない場合はここで打ち込んでください。

    対話モードではFTPサーバーのように、

    ・cd サーバー側のフォルダ移動
    ・lcd ローカル側のフォルダ移動
    ・get ダウンロード
    ・put アップロード

    という風なコマンドが使えます。

    さらに便利コマンドとして、

    ・keepuptodate ローカルディレクトリでの変更をリモートディレクトリに反映させる
    ・synchronize リモートディレクトリをローカルディレクトリと同期

    があります。
    リモートとはサーバー側のことです。
    大抵の用途はこの2コマンドで済むのではないでしょうか?

    コマンド一覧は公式Wikiを参考にしてください

    WinSCPを自動化

    前節では対話モードについて紹介しました。
    しかし、対話モードは人がいないとできません

    例えば、夜中に長時間かけて集計したテキストや、重たい動画ファイルなどのエンコード。
    これが終わり次第自動アップロードしたいなどいうことがあると思います。

    そんな時に次のようなコマンドで自動アップロードできます。
    WinSCP user@exsample.com /command “synchronize remote C:¥temp¥hoge hoge/” exit
    これは、synchronize と exit の2コマンドを実行させるコマンドです。
    exit を入れないと対話モードでハマってしまうので入れておきましょう。

    この一行を書いた、.bat ファイルを作っておけばダブルクリックもしくは、
    Windowsタスクスケジューラーに組み込むなどでアップロードが終わります。

    ダウンロードの場合は、
    WinSCP user@exsample.com /command “synchronize C:¥temp¥hoge hoge/” exit
    です。

    もっと凝ったコマンドを書きたい

    一行コマンドだけでなく複数のコマンドを渡すことも出来ます。
    たとえば commands.txt というテキストファイルを作って、そこにコマンドをたくさん書いておきます。

    そのテキストファイルを
    WinSCP /console /script=commands.txt
    と渡すことで、テキストファイルの中身を自動実行してくれます。

    終わりに

    いかがでしたでしょうか?
    WinSCPの紹介と、それを使った自動化について解説しました。
    面倒なことは機械にやらせちゃって効率上げていきましょう!

    みなさまのお役に立てれば幸いです。

    ではでは〜

    created by Rinker
    ¥7,364
    (2020/08/09 20:32:03時点 Amazon調べ-詳細)