PR

WinSCP で遠隔地へデータを自動退避

WinSCP はFTP/SFTP等に対応したファイル転送ツール。オープンソースのフリーソフトウェアでGUI版とCUI版があり、Portable版としても利用出来る。PuTTYとの連携も可能だ。また、ミラーリングアップロードや同期などの必要な機能もサポートしている。

スポンサードリンク

◆GUI版

GUI版にはセットアップ版とPortable版があるが、内容が違うような印象を受けた。掲載している画像はセットアップ版だが、利用はPortable版にしている。基本的な利用方法は一般的なFTPソフトウェア(Filezilla/NextFTP/FFFTP等)と同様なので割愛する。

マスターパスワードを設定できる

マスターパスワードを設定できる

マスターパスワードを設定できる

マスターパスワードを設定できる

証明書を利用したセキュアな通信にも対応できる

証明書を利用したセキュアな通信にも対応できる

◆コマンドライン版

バッチファイルで同時処理実行中

バッチファイルで同時処理実行中

GUI版も便利であるが、コマンドライン版を使うとWebDAVへの自動同期もさらに便利になる。

ローカルディレクトリとリモートディレクトリを比較してリモートディレクトリを更新する(更新されたファイルをアップロードする)には、対象とするホストにログインしたのち、「remote」オプション付きでsynchronizeコマンドを実行する。
synchronize remote <ローカルディレクトリ> <リモートディレクトリ>

keepuptodateコマンドを実行すると、引数で指定したローカルディレクトリ中のファイルを監視し、更新されたファイルを自動的にリモート側にアップロードする
winscp> keepuptodate C:\Users\taro\work public_html/work

「/synchronize <ローカルディレクトリ> <リモートディレクトリ>」というオプションを利用すれば、WinSCPの起動直後に指定したディレクトリ間の同期を実行することができる。
“C:\Program Files\WinSCP\winscp.exe” [email protected] /synchronize “C:\Users\taro\work” “/Users/taro/public_html”
/synchronizeの代わりに「/keepuptodate」オプションを使用すれば、前述のkeepuptodateコマンドと同様の処理を行うこともできる。

option batch on    ←バッチモードをOnにする
open [email protected] ←「taro」というユーザーで「172.17.4.69」に接続する
cd public_html/work2  ←リモート側の「public_html/work2」ディレクトリに移動
lcd C:\Users\taro\work ←ローカル側の「C:\Users\taro\work」ディレクトリに移動
synchronize remote   ←リモート側のファイルをローカル側のファイルに同期
exit          ←終了

“C:\Program Files\WinSCP\winscp.exe” /console /script=”<スクリプトファイル名>”
WinSCPスクリプト入門:コマンドやバッチファイルとの連携による自動処理 – SourceForge.JP Magazine : オープンソースの話題満載より引用)

◆上記を参考にしてやってみた

ちなみにServersManのWebDAVと同期。最終的には勝手に検知して常に同期するようにする。たぶん、keepuptodateコマンドを使うのだろうが取り敢えずテスト。

まずスクリプトファイルを次のようにしてみた:

option batch on
open [email protected]
cd /var/serversman/htdocs/MyStorage/BackupDatas
lcd D:\BackupDatas
synchronize remote
exit

そして、.batファイルを作る:

winscp.exe /console /script=”sk_batch_cmd.txt”

これで、batファイルを実行すればスクリプトファイルを実行してくれる。パスワードを聞かれなかったので、おそらくテスト接続したGUI版で保存したパスワードを使ったのだろうと思う。(プロパティに引数を設定しても良いのだろうけど)

ちなみにWinSCPを実行しているパソコンをサーバーに見立てて、特定のフォルダにデータを集めている。転送するフォルダは共有フォルダになっていて、転送対象になっている。ここでは{共有フォルダ}と表記する。

  1. クライアント10台があって、そこからは{共有フォルダ}内の自分のクライアント番号に対応したフォルダにRealSyncを使って転送してくる。
  2. 同期モードになっているので、クライアントが消したファイルは{共有フォルダ}の自分のフォルダからも消える。
  3. NASからはサーバー自体がRealSyncの同期モードで{共有フォルダ}内のNAS用フォルダに転送させる。
  4. WinSCP がWebDAVサーバーに接続する。
  5. ローカルとリモートを比較して同期する。

これで常にバックアップがサーバーに取られていて、さらにそのバックアップと全く同じものが遠隔地のWebDAVに転送されていることになる・・・ハズ。しばらく時間がかかるだろうから取り敢えずここまで。これでよければ再起動しようが何があろうがキチンと自動実行するように仕掛ける。

参考文献

# WinSCP 4.2.9 でテストした。
# 日本語ファイルの転送も問題なくできた。が、ServersMan側の設定かもしれないので参考までに。

コメント