ボツ決定!!WordPressの記事や画像をGmailでバックアップする方法

前回の記事「WordPressの記事や画像をS3にバックアップする方法」ですが、最初は「WordPressの記事や画像をバックアップする3つの方法!」のような形で、バックアップ方法を何種類か紹介しようと考えていました。ただ、3つの方法を作っている最中にあんましイケてないな...と思い、S3を使ったバックアップだけを載せることになりました。

今回の記事では、ボツになった「WordPressの記事や画像をGmailに飛ばしてバックアップ」を紹介したいと思います。

バックアップ方法について

簡単に説明しますと、サーバ上で記事や画像をパスワード付きのZIPに固めて、Gmailに送信する方法です。

この方法だとGmailの容量を食います。その対策として、Gmailの「自動振り分け設定」でメールをゴミ箱に直行させます。そうすると、30日後に自動的にメールが消えるので、容量の心配を払拭できます。

バックアップ手順

必要なパッケージのインストール

添付ファイルありのメールを送信するためのパッケージをインストールします。

メールにバックアップファイルを添付するのに、uuencodeコマンドを使います。uuencodeはsharutilsパッケージに含まれるので、これをインストールします。メールにファイルを添付する方法は、こちらのサイトを参考にさせていただきました。

sudo yum -y install mailx
sudo yum -y install sharutils

バックアップ用スクリプトを実行

以下のスクリプトをサーバ上に置き、<>で囲まれた部分を修正します。そして実行すると、バックアップファイルが添付されたメールが、宛に送信されます。

#!/bin/sh
MYSQLDUMP_BIN=/usr/bin/mysqldump
MAIL_BIN=/bin/mail
ZIP_BIN=/usr/bin/zip
UUENCODE_BIN=/usr/bin/uuencode

# メールの宛先と件名
MAIL_TOADDR=<MAIL_ADDRESS>
MAIL_SUBJECT=<SUBJECT>

# バックアップの一時保存先
BACKUP_TEMPDIR=/tmp/backups/
mkdir -p $BACKUP_TEMPDIR

# ZIPファイルのパス
ZIP_OUTPUT_PATH=$BACKUP_TEMPDIR/backup-`date '+%F'`.zip
ZIP_PASS=<PASSWORD>

# MySQLのユーザ名
MYSQL_USER=<MYSQL_USERNAME>
# MySQLのホスト
MYSQL_HOST=<MYSQL_HOST>
# MySQLのパスワード
MYSQL_PASS=<MYSQL_PASSWORD>
# MySQLのDB名
MYSQL_DBNAME=<MYSQL_DBNAME>
# MySQLの、一時保存先
MYSQL_TEMPPATH=$BACKUP_TEMPDIR/dump.sql

# アップロードされた画像が保存されているディレクトリのパス
UPLOADED_IMAGE_DIR=<WORDPRESS_PATH>/wp-content/uploads/

# MySQLのバックアップを取ります。
$MYSQLDUMP_BIN -cu $MYSQL_USER -h $MYSQL_HOST --password=$MYSQL_PASS $MYSQL_DBNAME > $MYSQL_TEMPPATH

# パスワード付きで圧縮します。
$ZIP_BIN -r -P $ZIP_PASS $ZIP_OUTPUT_PATH $MYSQL_TEMPPATH $UPLOADED_IMAGE_DIR

# メールを送信します。
$UUENCODE_BIN $ZIP_OUTPUT_PATH `basename $ZIP_OUTPUT_PATH` | $MAIL_BIN -s "$MAIL_SUBJECT" $MAIL_TOADDR

ボツになった理由

実際に送信してわかったのですが、パスワード付きZIPファイルをGmailで受信できませんでした。。。(Gmailヘルプ - 一部ファイル形式がブロックされる

また、外部を通るので、バックアップのサイズがでかくなるにつれて転送量が気になってくる可能性があります。

ソースコード

今回のソースコードは、https://github.com/yusukemurayama/blog-samples/blob/master/wordpress_s3_backup/mail_backup.shに公開しました。

この記事が役に立った場合、シェアしていただけると励みになります!!