ローカルマシンへの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コマンド一覧