hetemlでデータベースのバックアップを自動で取る

以前紹介した
bashスクリプトでデータベースをバックアップする
のコードをhetemlのサーバーにあげて、cronで回すとエラーが

調べてみると..
hetemlのよくあるお問い合わせに
http://heteml.jp/support/faq/2085.html

Q.cronで rm や wget 、find コマンドは使えますか?
A.cronでは rm や wget 、find コマンドはご利用いただけません。

rmが使えない..
困ったということでphpでバックアップを取ろうと、以前の記事
phpでデータベースのバックアップをとる
でやりました

そのままのコードだと
ログインルートにファイルが保存される、
hetemlのmysqlデータベースは別サーバー,
なので、ちょっと修正


#!/usr/bin/php
<?php

$date = new DateTime();
$today = $date->format("Y-m-d");

$date->sub(new DateInterval("P11D"));
$deleteDate = $date->format("Y-m-d");

$backupFolder = "backup/database/";
$backupFile = $today . ".dbbackup";
$deleteFile = $deleteDate . ".dbbackup";

system("mysqldump -u (user name) -h (database server address) --password=(password) (database name) > {$backupFolder}{$backupFile}");

if (file_exists($backupFolder.$deleteFile)) {
    unlink($backupFolder.$deleteFile);
}

backup.phpなどとファイルに保存、sftpかsshを有効にしてscpでサーバーにあげます
権限は700になるようにしました

sftpかsshでログインして、
backup/database
というディレクトリをサーバーへ作っておきます

あとはcron設定をして、バックアップが取れてれば成功です
cronのエラーはメールアドレスをcron設定の画面で登録すると、飛んできます
参考) heteml cron設定マニュアル

いまのところWEBサーバーにバックアップを保存してます
今後、違うサーバーへ保存しようと思います



カテゴリーphp

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください