Google Driveのスペースを利用してVPSに設置したWordpressデータのバックアップを設定してみた。
参考サイト:http://codenote.net/wordpress/3472.html https://qiita.com/aviscaerulea/items/53123ce5b79c80e31a71

Google driveをコマンドラインで利用する場合の参考サイト: https://timothy-quinn.com/backing-up-linux-server-files-to-google-drive/ 現在はリンク切れ。

まずはデータベースのバックアップ

#!/bin/sh
#backup_db.sh
DB_NAME=mydbname # wordpressのデータベースの名前
DB_USER=mydbuser  # wordpressのデータベースユーザー名
DB_PASSWORD=mydbpassword # wordpressデータベースへのパスワード
DB_HOST=localhost # データベースホストの指定

DATE_STR=$(date +\%Y\%m\%d-\%H\%M\%S) # 日付をつける
BACKUP_PATH=/tmp  #バックアップしたデータの格納先
BACKUP_FILE=$DB_NAME-$DATE_STR.sql # dbのファイル名を付ける
GDRIVE_DIR_ID=0B840dMOrdKT5am9aRDlNUUFic0k # バックアップファイルを格納するGoogle Driveのフォールダ
KEEP_DAYS=3  #バックアップされたファイルの保持期間?
## backup DB
cd $BACKUP_PATH # バックアップ先へ遷移
mysqldump $DB_NAME --default-character-set=binary \
-h $DB_HOST -u $DB_USER -p$DB_PASSWORD > $BACKUP_FILE # MySQLにてデータベースをアーカイブ
tar zcvf $BACKUP_FILE.tar.gz $BACKUP_FILE # tarで圧縮
gdrive upload --parent $GDRIVE_DIR_ID $BACKUP_FILE.tar.gz # Google Driveへアップ
rm -f $BACKUP_FILE.tar.gz $BACKUP_FILE  # 作ったバックアップファイルを削除

## Housekeeping
LIMIT_TIMESTAMP=$(date -d "$KEEP_DAYS days ago" +%s)
gdrive list --no-header --max 1000 --query "'$GDRIVE_DIR_ID' in parents" | while read ln
do
ITR_ID=$(echo $ln | awk '{print $1}')
ITR_DATE=$(echo $ln | awk '{print $(NF-1),$NF}')

if [ $(date -d "$ITR_DATE" +%s) -lt $LIMIT_TIMESTAMP ]
then
gdrive delete $ITR_ID
fi
done

次にファイル類のバックアップ

#!/bin/sh
# backup_file.sh
DATE_STR=$(date +\%Y\%m\%d-\%H\%M\%S) #日付を設定
 
TARGET_PATH=/var/www/vhosts/ # バックアップするデータへのパス指定
TARGET_FILE=codenote.net    # バックアップするファイルの指定
BACKUP_FILE=$TARGET_FILE-$DATE_STR.tar.gz # バックアップしたファイルの名前付け
GDRIVE_DIR_ID=0B840dMOrdKT5SFg5UkZ2c05aWkU # google driveのフォールダの指定
 
KEEP_DAYS=7 # ファイルの保持期間の指定?
 
## backup files
cd $TARGET_PATH  #バックアップすべき場所へ移動
tar cfz $BACKUP_FILE $TARGET_FILE/ # ファイルの圧縮
gdrive upload --parent $GDRIVE_DIR_ID $BACKUP_FILE # google driveの所定フォールダへのアップロード
rm -f $BACKUP_FILE #バックアップ元コンピュータ内でバックアップファイルを削除
 
## Housekeeping
LIMIT_TIMESTAMP=$(date -d "$KEEP_DAYS days ago" +%s)
gdrive list --no-header --max 1000 --query "'$GDRIVE_DIR_ID' in parents" | while read ln
do
  ITR_ID=$(echo $ln | awk '{print $1}')
  ITR_DATE=$(echo $ln | awk '{print $(NF-1),$NF}')
 
  if [ $(date -d "$ITR_DATE" +%s) -lt $LIMIT_TIMESTAMP ]
  then
    gdrive delete $ITR_ID
  fi
done

結果的に画像のようにバックアップデータの転送に成功。

なおバックアップしたファイルを暗号化する場合は次の様なスクリプトを追加する。

# encrypt the tar
openssl aes-256-cbc -a -salt -in "$TARGET_FILE-$DATE_STR.tar.gz" -out "$TARGET_FILE-$DATE_STR.tar.gz.enc" -pass 'pass:hogehoge'
カテゴリー: ITwordpress

1件のコメント

nobby · 2017年2月24日 9:35 AM

ただいまシェルスクリプトの定時実行設定で躓き中。
OSはCentOS7.3なのだが従来の crontabでの設定では動かないようだ。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください