メニュー

東京・小金井市のWEB制作会社の豆知識

MEMORANDUM

PHPでデータベース(MySQL)のデータを自動バックアップ

データベースのバックアップを取りたい時、毎回管理ツールからエクスポートボタンを押しても可能だけれど、押し忘れや対応できない時があるのを避けるため自動化した際の内容をメモ。

PHP

$dbHost = '○○○○'; // MySQLホスト名
$dbName = '○○○○'; // データベース名
$dbUser = '○○○○'; // データベースユーザー名
$dbPass = '○○○○'; // データベースパスワード

$filePath = './○○○○/'; // ファイルを保存するディレクトリ
$fileName = date('Ymd_His').'.sql';
$savePath = $filePath.$fileName;

$command = "mysqldump ".$dbName." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." > ".$savePath;
exec($command);

「$filePath」に記載した内容のディレクトリ(パーミッション777)を作成し、上記を記述したファイルをサーバーに用意されているクーロン機能を使って定期的に実行する。

尚、ワードプレスで使用する場合は対象サイトの直下に下記のファイルを設置。
データベースとアップロードファイルをダウンロードします。

PHP

include('./wp/wp-config.php'); //ワードプレスの設定ファイル

$dbHost = DB_HOST;
$dbName = DB_NAME;
$dbUser = DB_USER;
$dbPass = DB_PASSWORD;

$filePath = './○○○○/'; // ファイルを保存するディレクトリ
$fileName = date('Ymd_His').'.sql';
$savePath = $filePath.$fileName;

$command = "mysqldump ".$dbName." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." > ".$savePath;
exec($command);

// 圧縮元ディレクトリ
$sourceDir = './wp/wp-content/uploads'; //ワードプレスのアップロードディレクトリ

// 保存先ディレクトリ
$destinationDir = $filePath;

// 保存するZIPファイル名
$zipFile = $destinationDir.'/backup_'.date('Ymd_His').'.zip';

$zip = new ZipArchive();

if ($zip->open($zipFile, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {

    // 再帰的にファイルを追加する関数
    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($sourceDir, FilesystemIterator::SKIP_DOTS),
        RecursiveIteratorIterator::SELF_FIRST
    );

    foreach ($files as $file) {
        $filePath = $file->getRealPath();
        $relativePath = substr($filePath, strlen($sourceDir) + 1);

        if ($file->isDir()) {
            $zip->addEmptyDir($relativePath);
        } else {
            $zip->addFile($filePath, $relativePath);
        }
    }

    $zip->close();
} else {
    echo "ZIPファイルの作成に失敗しました。";
}
RANKING

人気記事

同一カテゴリーの記事