サーバー上のファイル・データベースをサーバー上に自動バックアップする最も簡単な方法

前提として、cronをサーバーが使える事。

  1. バックアップするフォルダを作る。
    allmaintenance.jp/backup
  2. backupフォルダにPHPプログラムのファイルを作る。
    allmaintenance.jp/backup/wp_backup.php
<?php
# ==================================================
# WEBデータ(ファイルデータ)全体をバックアップ
# ==================================================
# --------------------------------------
#  CONFIG
# --------------------------------------
# 保管期間指定 ※バックアップファイルを何日分残しておくか
$period_day = '60'; // 単位は日

# 出力ファイル名を指定 (※圧縮ファイル名 今回はファイル名で日付がわかるよう出力日をファイル名にしています。)
$backup_filename = "web_".date('Y_m_d_H_i').".tar.gz";

# 出力フォルダパスを指定(バックアップファイルを保存するディレクトリまでのフルパスか相対パス)
$backup_dirpath = '/home/サーバーID/sitebackup/';

# バックアップしたいフォルダパスを指定(この階層以下のフォルダ・ファイルが全てバックアップ保存されます)
$target_dir = '/home/サーバーID/wp/';


# --------------------------------------
# CONFIG END
# --------------------------------------



# --------------------------------------
#  BACKUP 実行
# --------------------------------------
# 必要であればフォルダのパーミッション適宜変更
system( "chmod 705 ".$backup_dirpath);
# BACKUP 実行
system( "tar -zcvf ".$backup_dirpath.$backup_filename." -C / ".$target_dir ); // ※xserverの場合

# --------------------------------------
#  保管期間より過去のファイル削除 実行
# --------------------------------------
system( "find ".$backup_dirpath." -type f -daystart -mtime +".$period_day." | xargs rm -rv {}  " );

# 必要であればフォルダのパーミッションを元に戻す

あとは、cronで、「allmaintenance.jp/backup/wp_backup.php」を毎日3時位に実行しておけばいい。共用サーバーの場合、あまり迷惑をかけないように夜に実行すると良いと思います。

使ってみての感想

実際にこれでバックアップすると、バックアップ速度が非常に速いです。ワードプレスならbackwpupが有名ですが、これよりはやい。
あと、ファイルサイズが大きくなると全てのデータがバックアップできない場合があります。システムファイル、データベース両方とも、一部のファイルや、データがバックアップ出来ていない経験があり、今まではシステムファイルは、SSHは使わずSFTPで5時間位(メインサイト)掛けてバックアップをとっていました。データベースは、今までロリポップのバックアップ機能が優秀で使っていたのですが、今回CPIに引っ越しして、バックアップオプションはランニングコストが高いのでこの方法で行いました。データベースも、しっかりエクスポートできているようで安心しました。

その他,未分類

Posted by ぼっち