【コラム】

日本語で10行プログラミング

77 ホームページのバックアップツール

77/90

なでしこ開発日誌~バックアップが大事

先日のことです。なでしこの掲示板からデータが消えてしまったとの連絡がありました。詳しく聞いてみると、どうやらレンタルサーバーのHDDが壊れてしまったようで、掲示板のデータなどがごっそり消えてしまったとのことです。いつも安心して使っているパソコンも、壊れてデータが消えてしまうときがくる可能性はあります。今回、普段から定期的なバックアップの重要性を改めて痛感しました。

さて、この事件の後、管理を引き受けてくださっているEZNavi.netさんより、なでしこで掲示板の自動バックアップツールを作ったとの連絡がありました。これで今後、トラブルが起きても最小限の被害で済むようになりました。またこれを機に、なでしこのバージョン1.4013にて、FTP関連の命令を若干追加し、不具合を修正しています。

レンタルサーバーなどで動いている掲示板データのバックアップは、FTPソフトなどを使ってバックアップをとらないといけなかったりとなかなか面倒ですが、なでしこを使うことで、こうした面倒な作業を自動化できます。

そこで、今回は、最新版のFTP命令の紹介を兼ねて、FTPでファイルをバックアップするツールを作ってみようと思います。

ホームページのバックアップツール

FTPでWebサーバーのファイルバックアップツールを作ってみます。なでしこには、FTPを利用するための命令がいくつか用意されていますので、はじめにこの命令の使い方を紹介します。そして、今回作るバックアップツールの設計をしてから、実際にプログラムを組み立ててみます。

FTP命令の使い方

なでしこのFTPに関する命令は、すべて「FTP接続」や「FTPダウンロード」など、「FTPxxx」という名前になっています。そのため、なでしこのエディタで「FTP」とタイプして、続けて[Ctrl + SPACE]キーを押すと、命令の補完機能が働き、エディタの左側にFTPに関する命令がすべて表示されます。

FTPはネットワーク越しにサーバーに接続し、ファイルをアップロードしたりダウンロードしたりと、ファイルのやり取りやサーバーの基本的な操作を行うことができます。命令を使うにあたって最低限のルールとしては、はじめに「FTP接続」命令でサーバーに接続して何か処理した後、最後に「FTP切断」命令でサーバーとの通信を切断する必要があります。

以下が、FTP処理の雛形となるプログラムです。

「ホスト=xxx
ID=xxx
パスワード=xxx」でFTP接続。
※ここでなにか処理
FTP切断。

上のプログラムでは、どこのサーバーに接続するかを指定するホスト、ID、パスワードなどを「xxx」と伏字にしていますが、この部分を接続したいサーバーの設定に書き換えます。

ファイルのやり取りの例

そして、サーバーに接続して、ファイルをサーバーにアップロードするときには、「FTPアップロード」、サーバーからダウンロードするときには「FTPダウンロード」という命令を使います。

以下は、ファイルをアップロードするプログラムの例です。

ローカルファイル名=マイドキュメント&「index.html」
サーバーファイル名=「index.html」
「ホスト=xxx
ID=xxx
パスワード=xxx」でFTP接続。
ローカルファイル名をサーバーファイル名へFTPアップロード
FTP切断。

ここで注意点なのですが、サーバーファイル名にはディレクトリ名などを指定できません。フォルダを指定したい場合は「FTP作業フォルダ変更」命令を利用して、ディレクトリを移動。その後、アップロードやダウンロードを行うようにします。

もし、フォルダにあるファイルを全部アップロードしたい場合には、なでしこのバージョン1.4013で追加した「FTPフォルダアップロード」命令を使います。これは「FTPアップロード」とほぼ同じ使い方ながら、フォルダの中のファイルを丸ごとアップロードできます。

以下は、マイドキュメントの「web」フォルダを丸ごと、サーバーの「web」フォルダにアップロードする例です。

ローカルフォルダ名=マイドキュメント&「web\」
サーバーフォルダ名=「web」
「ホスト=xxx
ID=xxx
パスワード=xxx」でFTP接続。
ローカルフォルダ名をサーバーフォルダ名へFTPフォルダアップロード。
FTP切断。

そして、ファイルやフォルダのダウンロードも同じように「FTPダウンロード」と「FTPフォルダダウンロード」で行うことができます。

以下は、サーバーにある「web」フォルダの内容をマイドキュメントの「web」フォルダへ一括ダウンロードする例です。

サーバーフォルダ名=「web」
ローカルフォルダ名=マイドキュメント&「web\」
「ホスト=xxx
ID=xxx
パスワード=xxx」でFTP接続。
サーバーフォルダ名から、ローカルフォルダ名へ、FTPフォルダダウンロード。
FTP切断。

バックアップツールの設計

FTPの使い方がわかったところで、バックアップツールを設計してみましょう。今回は設計といっても、プログラムの流れを大まかに決めるだけで良いでしょう。バックアップツールは大体のところ定期的に実行することになるので、細かい設定ダイアログなどは不要でしょう。

ただし、後から若干の修正が簡単にできるように、フォルダ名などはプログラムの先頭にまとめて書くようにしましょう。これでフォルダ名を変える場合やこのプログラムを後から少しだけ変えた別のプログラムを作る場合にも、使いまわすのが簡単になります。

念のため、プログラムの手順を確認しておきます。

  1. サーバーや、ID、バックアップ対象フォルダを一括で指定する
  2. サーバーに接続する
  3. フォルダをダウンロードする
  4. サーバーから切断する

10行プログラムの作成

そして、以下が、実際になでしこで動作するバックアッププログラムです。

※今回のプログラムは、FTPへの接続プログラムですので、xxxと伏字にしてあるFTPのサーバーホストやIDなどを指定したり、フォルダのパスを変更しないと動きませんので注意してください。
# バックアップ設定
接続設定=「ホスト=xxx
ID=xxx
パスワード=xxx」#1
バックアップ元=「bbs」#2
バックアップ先=デスクトップ&「backup\」#3
# FTP処理
接続設定でFTP接続。#4
「cgi」にFTP作業フォルダ変更。#5
バックアップ元をバックアップ先へFTPフォルダダウンロード。#6
FTP切断。#7
「終わりました。」と言う。終わり。#8

プログラムを実行したところ

1行目は接続設定で、サーバーホスト、ユーザーID、パスワードを設定します。2行目はサーバーのどのディレクトリをコピーするかを指定します。3行目はローカルのバックアップ先を指定します。4行目では1行目で設定した接続設定を用いて、サーバーと接続します。

5行目ではカレントディレクトリを変更します。もし必要なければ、ここは削ってしまっても構わない行です。また、バックアップしたいディレクトリの構造が「cgi/kujira/bbs」となっているのなら、「FTP作業フォルダ変更」命令を複数回実行して深いディレクトリへ変更します。6行目では実際にダウンロードを行います。そして7行目ではサーバーから切断。8行目で処理が終了した旨を表示して、実際に終了します。

まとめ

以上、FTPの命令の紹介と、バックアップを行うプログラムの雛形ともいうべき10行プログラムを解説しました。レンタルサーバーによっては、もしもの時に備えて、データのバックアップをとってくれているところもあるようですが、今回のなでしこのサーバーように、復旧がされない場合も多いようです。

とにかく、大事なデータは日ごろからバックアップをとっておきたいものです。皆様も、お気をつけください。

77/90

インデックス

連載目次
第90回 10行プログラミング最終回~10行プログラミングを振り返って
第89回 フォルダ一括圧縮
第88回 テキストエディタに貼り付けたExcelの表を見やすく整形する
第87回 一発加算電卓
第86回 ブログにHTMLソースを貼れるよう変換する
第85回 カード式メモ帳
第84回 時間電卓を作る
第83回 アスキーアート地図エディタ
第82回 縦書き風テキスト作成ツール
第81回 Excelシートの比較を行う
第80回 ノルマ計算機
第79回 高速バックアップ
第78回 単語帳に読み上げ機能をつける
第77回 ホームページのバックアップツール
第76回 英単語帳を作成する(その2)
第75回 英単語帳を作成する(その1)
第74回 メモリカード挿入でデータをコピーするツール
第73回 モールス信号ソフトの作成
第72回 フォトCDランチャーを作る
第71回 残暑見舞い作成ツールを作る
第70回 画面キャプチャプログラムを作る
第69回 様々なルールに対応するビンゴシートのプログラムを作る
第68回 ビンゴカードを作る
第67回 ビンゴマシンを作る
第66回 パスワードマネージャの作成
第65回 アンドゥ機能をつける
第64回 テキストの比較ツール~FCフロントエンド
第63回 システム情報クリップ
第62回 飲み会電卓を作る
第61回 バイナリエディタの作成
第60回 メールフッタ作成ツール(その2)
第59回 メールフッタ作成ツール(その1)
第58回 プロセス監視ツールを作成する
第57回 TODOメモを作る
第56回 携帯電話をテキストリーダーに使う(2)
第55回 携帯電話をテキストリーダーに使う(1)
第54回 「オープンソースカンファレンス2006 Tokyo/Spring」に参加しました
第53回 10行でチャットソフトを作る(2)
第52回 10行でチャットソフトを作る(1)
第51回 プレゼンタイマーを作る
第50回 カラーピッカーを作る
第49回 簡単な暗号作成プログラム
第48回 お手軽データベース「SQLite」を使う
第47回 CUI(コマンドライン)環境を拡張する
第46回 デスクトップ画像を記録するプログラム
第45回 市外局番で住所を調べる検索プログラム
第44回 コマンドライン型ランチャーを作る
第43回 文字数カウンタを作る
第42回 日本語でバッチ処理
第41回 イベントドリブンと電光掲示板
第40回 なでしこでWindowsの「送る」メニューを使いやすくする
第39回 同人音楽即売会M3に参加して思ったこと
第38回 画像のサムネイル作成
第37回 なでしことExcelで行事予定カレンダーを作ろう
第36回 なでしことExcelで月間カレンダーを作ろう!
第35回 なでしことExcelで年間カレンダーを作ろう
第34回 急な電話にも安心、意外と便利な「手書きメモ」
第33回 携帯電話のアドレスデータを取り出す
第32回 記念日カウンターを作る
第31回 顔文字入力支援ソフト
第30回 アスキーアートのためのエディタ
第29回 HTTPサーバーを作る
第28回 手紙のあいさつ文を作成するプログラム
第27回 ギターコードの構成音を表示
第26回 音楽の再生スピードを変える
第25回 ミニスライドショーを作る
第24回 撮影日で写真を振り分け
第23回 PSP用テキスト画像の作成
第22回 金種計算
第21回 パスワードを自動生成
第20回 携帯メールでWEBを更新する
第19回 時間の使い方を反省するプログラム
第18回 ウェブを画像でキャプチャ
第17回 ラーメンタイマーを作る
第16回 画像のトリミングツール
第15回 ごみの分別カレンダー
第14回 デスクトップ検索ツール
第13回 フォント見本帳
第12回 セピア調の画像ビューワー
第11回 健康チェック
第10回 10行で壁紙にらくがきする
第9回 WEBサイトの更新チェッカー
第8回 WEBページのリンク切れをチェック その2
第7回 WEBページのリンク切れをチェック
第6回 音楽ファイルの整理 - メディアタグから自動フォルダ分類
第5回 請求書の自動作成・印刷~Word連携技
第4回 重要データのバックアップ術
第3回 10行ニュースリーダーを作ろう!
第2回 なでしことは その2
第1回 なでしことは? その1

もっと見る

人気記事

一覧

イチオシ記事

新着記事