« ブログの危険性 | メイン

2006年07月03日

MySQL バックアップを作成するperlスクリプト

「バックアップ」ボタンをブラウザに表示して、ユーザへバックアップを保存してもらう
というのが目的なのだが、mysqldumpで検索をかけても、コマンドラインからの説明ページで
埋もれていて必要な情報が見い出せない。

簡単なものだが若干はまったのでメモ。
perl好きな方、どうぞ。

1.backup.cgiの作成(名前はお好きなものに...)


#!/usr/local/bin/perl

$user = "USERNAME";
$passwd = "PASSWORD";
$dbname = "DATABASE NAME";

$cmd = "/usr/local/bin/mysqldump $dbname -u $user -p$passwd | gzip> $dbname.gz";
system($cmd);
print "Location:$dbname.gz\n\n";

exit;


※-pと$passwdの間に空白を入れるとNG。
※mysqldumpは絶対パスで記述する。

2.apacheのhttpd.conf、以下の行をコメントアウトする。


AddEncoding x-gzip gz

※apacheのデフォルトでは、gzファイルを自動展開される仕様になっているので
 これを辞めさせる。
 そのままだとブラウザに内容が表示されてしまいダウンロードできない。
 レンタルサーバ等で変更できない場合には


$cmd = "/usr/local/bin/mysqldump $dbname -u $user -p$passwd | zip> $dbname.zip";
system($cmd);
print "Location:$dbname.zip\n\n";


と、zip圧縮にしてみる。
これでもダメなら


$cmd = "/usr/local/bin/mysqldump $dbname -u $user -p$passwd > $dbname.HOGE";
system($cmd);
print "Location:$dbname.HOGE\n\n";


と、圧縮しないで更に拡張子はありえないものにする...

投稿者 sio : 2006年07月03日 20:00