小物ツールを作るとき、私はよくPHPとSQLiteを使います。PHPなら簡単にSQLite使えるし、バックアップが簡単なためです。
例えば名セリフDB(ほとんど使われていませんがw)では以下のような関数を作っていつでもバックアップと復元ができるようにしています。
define("DB_NAME", "hoge.db");
define("BACK_DIR", "./fuga");
function back_up() {
$time = getdate();
$date = sprintf("%04d%02d%02d-%02d%02d%02d"
,$time['year'],$time['mon'],$time['mday'],$time['hours'],$time['minutes'],$time['seconds']);
$back_up_name = BACK_DIR . "/" . $date . ".db";
if (copy(DB_NAME, $back_up_name)) {
return "OK Back up $back_up_name";
} else {
return "NG Back up";
}
}
function list_of_old() {
$dh = opendir(BACK_DIR);
$files = array();
while (false !== ($file = readdir($dh))) {
if ($file == '.' || $file == '..' || !strstr($file, '.db')) continue;
$files[] = $file;
}
return $files;
}
function recover($date) {
$file = $date; // list_of_oldで表示した日付
if (!$file || $file == "") return;
$file = BACK_DIR . "/" . $file;
if (copy($file, DB_NAME)) {
return "OK Recover From $file";
} else {
return "NG Recover";
}
}
まあ、日付でDBファイルをコピーしてバックアップして、復元するときもバックアップファイルからコピーして置換するっていう。
こういう豪快なことができるのもシンプルDBであるSQLiteと、データサイズが小さくて済むユーザーレスサービスの強みですね。
以上