Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
<?php
//データベースサーバへのログイン情報の設定
$dbHost = "xxxxxx.sakura.ne.jp";
$dbUser = "user";
$dbPass = "password";
//当日(cronでバックアップを実行する日付)を名称にしたディレクトリを作成する
//(例)/backup/20141212/ のようなディレクトリを生成します
$today = date('Ymd');
$filePath = "/home/{ユーザ名}/backup/".$today."/";
$old = umask(0);
mkdir($filePath, 0777);
umask($old);
//データベースサーバにログイン
$dbc = mysql_connect($dbHost,$dbUser,$dbPass);
//サーバ内のデータベース名を取得し、配列に入れる
//*PHP5.5ではmysql_list_dbs,mysql_db_nameが非推奨のため注意ください
$db_list = mysql_list_dbs($dbc);
$i=0;
$db_list_max = mysql_num_rows($db_list);
while ($i<$db_list_max){
$dbs[] = mysql_db_name($db_list,$i);
$i++;
}
//データベース毎に、mysqldumpコマンドを実行し、gzipで圧縮して保存する
// "/usr/local/bin/mysqldump"のようにコマンドまでのパスを記述しないと、cronでの実行に失敗します。
for ($i = 1; $i < count($dbs); $i++){
$command = "/usr/local/bin/mysqldump ".$dbs[$i]." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." | gzip > ".$filePath.$dbs[$i].".sql.gz";
system($command);
}
//日付の古いデータを削除します
// "-10 day" の記述で、10日前のデータを削除
$del_date = date("Ymd",strtotime("-10 day"));
$dir = '/home/{ユーザ名}/backup/'.$del_date;
system("rm -rf {$dir}");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment