定期的にバックアップ取るときに使って欲しい。
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'database_name');
define('DB_USER', 'database_user');
define('DB_PASSWORD', 'database_password');
define('DB_BACKUP_DIR', '/var/www/html/backup/');
define('EMAIL_TO', 'info@example.com');
define('EMAIL_FROM', 'info@example.com');
define('PERIOD_DAY', '365'); // バックアップファイルの保存期間
system('chmod 705 ' . DB_BACKUP_DIR);
$isSuccessBackup = system('mysqldump --default-character-set=utf8 ' . DB_NAME . ' --host=' . DB_HOST . ' --user=' . DB_USER . ' --password=' . DB_PASSWORD . ' > ' . DB_BACKUP_DIR . date('Y_m_d_H_i') . '.sql');
$isSuccessDeleteFile = system('find ' . DB_BACKUP_DIR . ' -type f -daystart -mtime +' . PERIOD_DAY . ' | xargs rm -rv {} \ ');
// メール送信
mb_language('Japanese');
mb_internal_encoding('UTF-8');
if ($isSuccessBackup === false) {
mb_send_mail(
EMAIL_TO,
'データベースのバックアップが失敗しています',
'データベースのバックアップが失敗しています。管理者にお問合せください。',
'From: ' . EMAIL_FROM,
'-f ' . EMAIL_FROM
);
} elseif ($isSuccessDeleteFile === false) {
mb_send_mail(
EMAIL_TO,
'古いデータベースの削除に失敗しました',
'古いデータベースの削除に失敗しました。管理者にお問合せください。',
'From: ' . EMAIL_FROM,
'-f ' . EMAIL_FROM
);
} else {
mb_send_mail(
EMAIL_TO,
'データベースのバックアップが完了しました',
'データベースのバックアップが完了しました。',
'From: ' . EMAIL_FROM,
'-f ' . EMAIL_FROM
);
}