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で実行すれば、定期的なバックアップが自動的にできる…はず。