ファイルサーバーなどをネットワーク上に構築していると、定期的にバックアップで別のサーバーに二重化して保存をしたり、自分のPC内のデータをネットワーク上の場所に自動でアップロードしたりする場合があります。
また、ビジネスとかで別会社のサーバーとFTPでネットワーク連携などをするケースも沢山あります。
今回は、Windowsに限定になりますが、FFFTPとWinSCPを使った自動アップロードの記事を書きました。
FFFTPでFTP連携でミラーリング
無料の優秀なFTPソフトでFFFTPを使ってサーバーとミラーリング連携をするようにする。
ココがおすすめ
FFFTPはフリーソフトなので無料
です。ダウンロードサイトはいろいろとありますが、有名どころで、窓の社、Vectorあたりからインストールしておけば間違いないと思います。
FFFTPは、通常はWindows上で普通にアプリケーションとしてFTPとしてデータの送受信を手動でできる便利なツールです。
私もホームページの更新などにFFFTPは現在も良く使用をさせていただいています。
今回は、自動でサーバーとのデータをミラーリング(サーバーのデータをダウンロードする)バッチファイルを作成してみたいと思います。
バッチファイルとは、windows環境下で動作するバッチ処理(複数の処理をまとめて順次実行する処理のこと)を記述するファイルのこと。分かりやすく言うと、たくさんの処理を自動で実行してくれるファイル。(引用「Qiita」)
動かし方は、そのバッチファイルをダブルクリックすれば、勝手にDOS窓(黒い小窓)が起動して動いてくれます。
もしくは、Windowsのタスクスケジューラ機能を使って計画的に自動で動かす事が出来ます。
バッチファイルとは?
バッチファイルと言っても特別なファイルではなく、適当なテキストエディターで、ファイルを作成して、
ココがポイント
拡張子に「bat」と付ければバッチファイル
になります。※拡張子を非表示から見えるようにしておくと便利です。
私は、Windowsのメモ帳などを使うのには抵抗があるので、TeraPadを使っています。テキストエディターは好みもあるので、なんでもOKだと思います。
バッチファイルを作成前にFFFTP接続テスト
まず、バッチファイルを書くにしても、FFFTPで接続する「ホスト名」が分からないとダメなので、バッチファイルを作成する前に、
ココに注意
手動でホストの設定した後接続して確認が必要
です。
接続可能である事を確認したら、ホスト名をメモしてからバッチファイルを作成始めます。
バッチファイルの作成
rem --set : 接続するホストの設定名を指定する
rem --mirrordown : 接続後ミラーリングダウンロードを行う
rem --force : ミラーリング開始の確認をしない
rem --quit : ミラーリング終了後、FFFTPを閉じる
rem 開始時刻を記録する
echo start > log.txt
date /t >> log.txt
time /t >> log.txt
rem バックアップを行う
"C:\Program Files\ffftp\FFFTP.exe" --set "ホストの設定名" --mirrordown --force --quit
rem 終了時刻を記録する
echo end >> log.txt
date /t >> log.txt
time /t >> log.txt
「rem」の行は、説明文なので、実際のバッチファイルには必要ありません。
ですから、ログの部分も必要なければ、1行で良いってことになります。
ちなみにオプションコマンドで、
参考
- -m または --mirror = 接続後ミラーリングアップロードを行う
- -d または --mirrordown = 接続後ミラーリングダウンロードを行う
というデータのミラーリング方法の選択ができる。
ただ、サーバーにアップロードする時は慎重にやった方がいいですね。
バッチファイルを定期的動かす
Windows10なら、左下窓「ここに入力して検索」の部分に、「タスクスケジューラ」とでも入力して検索すると簡単にタスクスケジューラが起動します。
あとは、「タスクの作成」から、バッチファイルを動かくスケジュールを設定すれば完了です。すごく簡単です。
●基本的なタスクスケジューラの使い方の参考サイト貼っておきます。
●違う方法でやっている参考サイト貼っておきます。
WinSPCでSFTPにて自動アップロード
SFTPとは、sshで暗号化された通信路を使って安全にファイルを送受信するプロトコル。また、それを利用してUNIXなどで暗号化ファイル送受信を行うコマンド。UNIX系OS向けのsshパッケージに標準で付属しているほか、Windowsなどから利用できるクライアントソフトなども公開されている。(IT用語辞典)
WinSPCでは、暗号化されたプロトコルでFTP連携ができるので、他社とのサーバー連携などには重宝される。
下記の記事は、以前やったことあるWinSPCの記事を転記したものなので、ちょっと間違っているかもしれませんが、自分用の備忘録として残して置きたいと思います。
2つのファイルを作成
WinSPCでは、スクリプトファイルとバッチファイルの2つのファイルから構成しました。
アップロード
D:\TEST に2つのファイルを設置する事にしました。
●upload.batのバッチファイルを作成
@echo off
"C:\Program Files (x86)\WinSCP\WinSCP.com" /script=D:\TEST\script.txt
●script.txtのスクリプト用ファイルを作成
※サーバーの/mnt/array/DATAの場所に、PC側のD:\TEST\DATA\内のデータをすべてアップロードしている。
open sftp://user:password@host.co.jp/
cd /mnt/array/DATA
put D:\TEST\DATA\*.*
exit
ココがポイント
秘密鍵を使う場合には、パラメーター設定
C:\Keyの場所に、joy.ppkという暗号化キーを置いたと設定すれば、
open sftp://user:password@host.co.jp -privatekey="C:\Key\joy.ppk"
ダウンロード
ダウンロードもサーバーに接続するバッチファイルは同じです。
●script.txtのスクリプト用ファイルを作成
※サーバーの/mnt/array/DATAの場所から、PC側のD:\TEST\DATA\内にダウンロードしている。
open sftp://user:password@host.co.jp -privatekey="C:\Key\joy.ppk"
cd D:\TEST\DATA\
get *.* /mnt/array/DATA
exit
タスクスケジューラで自動的に動かすには、FFFTPでやった時と同じ方法で動かすことができます。
注意点としては、スクリプトファイルは動かす必要がありませんので、バッチファイルだけを定期実行してください。
パスフレーズを聞かれるエラー
Pageantを設定すれば回避できるようです。
PuTTYに付属のソフトウェアです。これを使うと、サーバーへ接続するためのパスワード入力などの認証処理を、自動化することができます。起動するとタスクトレイに常駐します。
詳細は、参考サイトを見てみてください。