WordPressのデータをgdriveにバックアップ

WordPressやその他のファイルをバックアップ

VPSならHW障害でデータが壊れることはめったにない。
けれど、オペミスでファイルを壊す可能性はいつでもある…。

そこで、WordPressのデータやnginxの設定ファイルをgdriveにバックアップしておくことにします。

 

gdriveをLinuxで使う準備

ここのページでgdriveをLinuxで使う方法が紹介されてたので、備忘録的に転記。
下記コマンドでgdriveのコマンドを導入。

$ cd /usr/local/bin
$ sudo curl -JLO https://docs.google.com/uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download
$ sudo chmod +x gdrive-linux-x64
$ sudo ln -s gdrive-linux-x64 gdrive

p> 

『gdrive -list』を実行すると、認証ページアドレスが表示されます。
表示された『https://~』のアドレスをブラウザで開き、表示されたverification codeを入力します。

$ gdrive -list
Authentication needed Go to the following url in your browser: https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 Enter verification code:

 

これでLinuxをgdriveで使う準備が整いました。

 

定期的なバックアップ処理

指定したフォルダを圧縮したりWordPressのダンプを抜いてgdriveに保存するシェル。
シェルは書き慣れていないので、残念な点があってもご愛敬。

#!/bin/bash

# シェルのある位置に移動
cd `dirname $0`

# 各変数設定
# 一時ディレクトリ
tmpdir="/tmp"
# 保存ファイルのヘッダ部
fnhead="DailyBackup_" 
# 保存する世代数
gen=30

datestr=`date +%Y%m%d-%H%M%S`
backfn=${fnhead}${datestr}
backdir="${tmpdir}/${backfn}"


# 一時ディレクトリの作成
mkdir -p ${backdir}

# WordPressのDB
eval "mysqldump -u root -phogehoge wpdb_${datestr} | gzip -c > ${backdir}/wp_database_${datestr}.sql.gz"

# WordPressのファイル
eval "tar czf ${backdir}/wpfiles_${datestr}.tar.gz -C /home www"

# /etc/nginx
eval "tar czf ${backdir}/etc_nginx_${datestr}.tar.gz -C /etc nginx"

# /home/hogehoge
eval "tar czf ${backdir}/hogehoge_${datestr}.tar.gz -C /home hogehoge --exclude 'ダウンロード' --exclude '.cache' --exclude '.ssh'"

# バックアップファイル全体をアーカイブ
eval "zip -j ${tmpdir}/${backfn} -r ${backdir} -P hoagepass"

# gdriveにアップロード
eval "/usr/local/bin/gdrive upload ${tmpdir}/${backfn}.zip"

# 利用した各ファイルを削除
eval "rm  ${tmpdir}/${backfn}.zip"
eval "rm -Rf ${tmpdir}/${backfn}"

# 直近、gen世代を残しバックアップファイルを削除
ct=0
script="/usr/local/bin/gdrive list -m 1000 -q 'name contains \"${fnhead}\"'"
eval ${script}| while read line; do
  if [ $ct -gt  $gen ]; then
    set -f
    set -- $line
    eval "/usr/local/bin/gdrive delete $1"
    sleep 1s
  fi
  ct=`expr $ct + 1`
done

 

このシェルをcrontabで実行すれば、定期的なバックアップが自動的にできる…はず。