さくらVPSのWordPress環境バックアップ自動化

当BlogはさくらVPS上のCentos7にインストールしたWordPressで運用しています。Blog記事も増えてきたところなので、自動バックアップの仕組みを取り入れようと思います。

1.バックアップポリシー

以下のように決定しました。

  • バックアップファイルは暗号化して保存
  • バックアップファイルは世代管理をする
  • バックアップファイルはVPSから自宅サーバ環境に安全にコピーする
  • バックアップファイルはクライアントPCから簡単にアクセスできる
2.バックアップ構想

上記ポリシーを視覚化しました。

[さくらVPS]
「Blog環境(WordPress)」… Backup対象

BACKUP_blog_1.zip      … 暗号化ZIP圧縮コンテンツファイル(7世代管理)
BACKUP_blogdb_1.zip   … 暗号化ZIP圧縮DBSQLファイル(7世代管理)

→ SCP→        … 自宅SVよりSCPで取得
↑       ↓
↑       ↓
↑       ↓
[自宅SV(CentOS7]
「Samba公開Dir」   … 公開ディレクトリはPCからアクセス可

BACKUP_blog_1.zip

BACKUP_blogdb_1.zip

3.VPSバックアップ方針

WordPressのバックアップはプラグインなどは使わないマニュアルバックアップ方式です。  自動化のためにCRONでシェルスクリプトを起動します。シェルスクリプトは以下のように
3ファイルに分割します。パスワードなどのセキュアな情報は起動元ファイルで管理します。

(1)スクリプトの構成
NO スクリプト名 説明
1 AllBackup.sh CRON登録用スクリプトファイル。サブスクリプトを引数を付加してCallする。
2 DBBackup.sh WordPressのDBをバックアップするスクリプト
3 FileBackup.sh WordPressのwp-Contentディレクトリをバックアップするスクリプト
(2)Cron登録用スクリプト

・AllBackup.sh

説明:DBBackup.sh

NO 引数 説明
1 blogdb Backup対象のMysql(Mariadb)DB名
2 dbusr_hoge WordPressのDBログインユーザー名
3 db_hogehogepass DBログインユーザーのパスワード
4 zipencryptpasswd バックアップZIP圧縮ファイルのパスワード

説明:FileBackup.sh

NO 引数 説明
1 wpblog Blogのユニーク略称。バックアップファイルの一部に使用
2 /var/www/html/wordpress バックアップ対象Blogのパス
3 zipencryptpasswd バックアップZIP圧縮ファイルのパスワード
(3)DBバックアップ用スクリプト

・DBBackup.sh

5,7,9,17行目で引数を変数にセットしています。11,15,19行目で各ファイル名に月曜~日曜日に割り当てられている数を付加しています。これでファイル名を7世代で管理できます。24行目でmysqldumpコマンドでDBをsqlファイルに出力しています。出力されたSQLファイルを27行目でZIPファイルに圧縮しています。28行目で不要となったSQLファイルを削除しています。

(4)Fileバックアップ用スクリプト

・FileBackup.sh

同様に2,3,4行目で引数を変数にセットしています。14行目でフォルダをZIP圧縮しています。

4.自宅サーバVPSファイル取得方針

自宅SVのCentOS7よりVPSサーバへSCPの公開鍵認証接続をしバックアップファイルをコピーします。コピー先は、CentOSのsamba公開ディレクトリとします。

(1)専用ユーザ―作成

SCPコピーでだけ使用するユーザーを作成します。

(2)鍵ペアの生成

当Blogのこちらの記事を参考にTera Termで鍵ペア(公開鍵/秘密鍵)を生成します。この時パスフレーズは無(空白)にします。

(3)公開鍵の格納

作成した鍵ペアのうち公開鍵をVPSサーバにアップロードします。保存先は先程作成したユーザ―(backupusr)の.sshディレクトリです。アップロード後にファイル名をauthorized_keysに変更します。公開鍵の権限を変更しておきます。

(4)秘密鍵の格納

作成した鍵ペアのうち秘密鍵を自宅サーバにアップロードします。保存先はrootディレクトリの直下に.keyディレクトリを作成し保存します。秘密鍵の権限を変更しておきます。

(5)SCPスクリプト

・blog_backup.sh

2,3,4行目でバックアップフォルダとファイルを準備しています。6,7行でSCPファイルコピーをしています。-C:通信を圧縮、-p:コピー元の更新時間とモードを維持、-i:秘密キーを指定、-P:ポート番号を指定です。

以降は、 <接続ユーザー名@接続先IP:コピーファイルパス > <コピー先ローカルパス>になります。

5.Cronへの登録
(1)VPS側の登録

以下のように、/etc/cron.d/にbackupファイルを作成し起動時間と起動するスクリプトを定義します。下記では毎日5時に /root/AllBackup.shが起動されます。

(2)自宅サーバ側の登録

同様に、/etc/cron.d/にblgbackupファイルを作成し起動時間と起動するスクリプトを定義します。下記では毎日5時30分に/root/blog_backup.shが起動されます。

(3)バックアップ全体構成イメージ

上記構想をイメージ図に起こしました。テキストベースのイメージ図よりも分かり易くなりましたよね(?)。

(4)バックアップ結果確認

バックアップ結果は以下の通りローカルPCからエクスプローラで確認できます。現在のところうまくいっているようです。

6.参考にさせて頂いたサイト

SCP -リモートマシンにファイルコピー

ありがとうございます。

スポンサーリンク
レクタングル大広告




レクタングル大広告




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル大広告