やっと当ブログの WordPress のファイルとデータベースをバックアップして Google ドライブにアップロードするまでの処理を自動化しました。
扱っている技術的なものは以下のとおりです。
ひとまず、書いたシェルスクリプトを書き残しておきます。
# backup_db.sh
DB_NAME=mydbname
DB_USER=mydbuser
DB_PASSWORD=mydbpassword
DB_HOST=localhost
DATE_STR=$(date +\\%Y\\%m\\%d-\\%H\\%M\\%S)
BACKUP_PATH=/tmp
BACKUP_FILE=$DB_NAME-$DATE_STR.sql
GDRIVE_DIR_ID=0B840dMOrdKT5am9aRDlNUUFic0k
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
tar zcvf $BACKUP_FILE.tar.gz $BACKUP_FILE
gdrive upload --parent $GDRIVE_DIR_ID $BACKUP_FILE.tar.gz
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
# 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
KEEP_DAYS=7
## backup files
cd $TARGET_PATH
tar cfz $BACKUP_FILE $TARGET_FILE/
gdrive upload --parent $GDRIVE_DIR_ID $BACKUP_FILE
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
gdrive list でディレクトリの一覧を表示する。
$ gdrive list --query "mimeType='application/vnd.google-apps.folder'"
Id Name Type Size Created
0B840dMOrdKT5am9aRDlNUUFic0k db dir 2016-12-13 00:17:46
随時、内容をアップデートしていきます。