ローカルマシンへのFTPダウンロード(バックアップ)を、batファイル+windowsタスクスケジューラで自動化

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

レンタルサーバーなどでサイト運営、データベース運用を行っている場合、ファイルのバックアップを行いたい場合があります。
特に、MySQLなどデータベースのSQLがdumpされたファイルやログファイルなどは、できればローカルマシンにバックアップしたい。
以下、特定のウェブサーバー上のファイルを、バッチ処理+タスクスケジューラで、FTPダウンロードしてローカルマシン(Windows XP使用)にバックアップする手順。

スポンサーリンク

batファイルを作成

まずは、バッチファイル(ftpget.bat)を作成します。
ftpコマンドが記述されるファイルを生成し、実行を行うバッチ処理となります。

FTPホスト名(ドメイン名): example.com
FTP接続ユーザー: username
FTP接続パスワード: password
バックアップ対象のサーバー上ファイル: /hoge/fuga.txt
ローカルの保存フォルダ: C:\ftpget 以下に年月日フォルダを作成する(例:C:\ftpget\20090217)
生成するftpコマンドが記述されるファイル: ftpget.txt

・ftpget.bat

for /F "usebackq tokens=1,2,3,* delims=/ " %%I in (`date/T`) do (set datehensu=%%I%%J%%K )
mkdir C:\ftpget\%datehensu%
echo open example.com>ftpget.txt
echo user username password>>ftpget.txt
echo lcd C:\ftpget\%datehensu%>>ftpget.txt
echo bin>>ftpget.txt
echo get /hoge/fuga.txt>>ftpget.txt
echo bye>>ftpget.txt
echo quit>>ftpget.txt
 
ftp -n -s:ftpget.txt

上記内容のbatファイルを作成し、「C:\ftpget\」に保存します。
echo open example.com>ftpget.txt で、「open example.com」という文字が、「>ftpget.txt」で新規作成されたファイル(ftpget.txt)に書き込まれる。
>> は、追加書き込み。
このbatファイルをダブルクリックで実行すると、以下のような内容のftpget.txtが生成されます。

・ftpget.txt

open example.com
user username password
lcd C:\ftpget\20090217 
bin
get /hoge/fuga.txt
bye
quit

さらに、バッチファイル(ftpget.bat)の最後の行の「ftp -n -s:ftpget.txt」により、ftpget.txtに記述されたftpコマンドが実行されます。
ftpget.bat をダブルクリックでも実行できますが、Windowsタスクスケジューラの機能を利用して、1日1回など自動でバッチ処理を行うように設定します。

Windowsタスクスケジューラの設定

1.スタート→すべてのプログラム→アクセサリ→システムツール→タスク を選択。
2.スケジュールされたタスクの追加 をダブルクリックして開き、タスクウィザード起動。
3.次へをクリックし、アプリケーションを選択する画面で、先ほど作成したバッチファイル(ftpget.bat)を「参照」から選択する。
4.タスクの実行で、日単位、週単位などのスケジュールを選択。
5.続いて、開始時刻、実行間隔、開始日を決定。
6.ユーザー名、パスワードを入力。
7.完了
8.タスクにバッチ処理のスケジュールされたタスクが追加されたことを確認。
9.スケジュールされたタスクをダブルクリックすると、スケジュールの変更が可能。

これで、FTPダウンロードを行い、ローカルマシンにファイルをバックアップするバッチ処理が、決まった時間に自動で行われるようになります。
私の場合、MySQLデータベースをdumpしたファイルを、ローカルマシンにバックアップするために、この作業を行いました。
これで、サーバー上のファイルのバックアップがすごく楽になりますね。

※バッチ処理が走る際に、Windowsファイアウォールの警告ダイアログが出る場合がありますが、とりあえずスルーしました。

参考:
@IT:Windows TIPS — Tips:スクリプトで使うftpコマンド
@IT:Windows TIPS — Tips:タスク・スケジューラとWSHで定例処理を実現する
@IT:Windows TIPS — Knowledge:タスク・スケジューラをコマンド・プロンプトから制御する
http://www.sio.no-ip.com/mt/shio/archives/2006/06/windows-ftp.html
コマンドプロンプトを使ってみよう! −バッチファイルとは?−
ftpコマンドを使ったファイル転送方法
FTPコマンド(Windows)の場合
Windowsコマンド一覧

スポンサーリンク
 
スポンサーリンク