WordPress バックアップ 【バックアップ用 シェルスクリプト】

2021-05-25

シェルスクリプトを利用して、WordPressをバックアップする

WordPress のバックアップ用のスクリプトを作成
cronで登録すれば日次処理でバックアップ可能

処理概要としては以下の通り

  • WordPress のデータベースをダンプしてTAR圧縮
  • WordPress のコンテンツの保存先ををTAR圧縮
  • 古いバックアップファイルは、設定された日数後に削除

以下が、実際に作成したスクリプトです。
設定ではスクリプトが実行された14日までのバックアップファイルを残す設定になっています

#!/bin/sh

# backup date
KeepDay=14
# backup directory
Backup_Dir="/mnt/samba/backup/wordpress"
# tmp directory
Tmp_Dir="/var/tmp"
# MySQL User
DB_User="cms"
# MySQL Passwd
DB_Pass="passwd"
# MySQL database
DB_Name="cms"
# MySQL tmp backup file
DB_TmpFile=${DB_Name}"Mysql"
# CMS_directory
CMS_Dir=/var/www/html/cms
# CMS tmp file
CMS_TmpFile=${DB_Name}"www"

export LANG=C
timestamp=`date +%Y%m%d`
DB_BakFile=${DB_TmpFile}_${timestamp}
CMS_BakFile=${CMS_TmpFile}_${timestamp}

if [ ! -d ${Backup_Dir} ] ; then
mkdir -p ${Backup_Dir}
fi

#----------------------------------------
# mysql databaes
#----------------------------------------

# mysqldump
/usr/bin/mysqldump -u ${DB_User} -p${DB_Pass} --opt --all-databases > ${Tmp_Dir}/${DB_BakFile}.sql

# backup directory
cd ${Tmp_Dir}

tar czf ${DB_BakFile}.tar.gz ${DB_BakFile}.sql
cp ${DB_BakFile}.tar.gz ${Backup_Dir}/${DB_BakFile}.tar.gz

#----------------------------------------
#cms contens
#----------------------------------------

if [ ! -d ${CMS_Dir} ] ; then
echo "${CMS_Dir} ... none"
echo "cms contens fail"
exit 1
fi

cd ${CMS_Dir}

tar czf ${Tmp_Dir}/${CMS_BakFile}.tar.gz ./*
cp ${Tmp_Dir}/${CMS_BakFile}.tar.gz ${Backup_Dir}/${CMS_BakFile}.tar.gz

# old file(backup Dir)
olddb_file=`find ${Backup_Dir} -mtime +${KeepDay} |grep .*.tar.gz`

for list in ${olddb_file}
do
echo "delete old backup file .... ${list}"
rm -f ${list}
done

olddb_file=""

# old file(tmp Dir for cms)
olddb_file=`find ${Tmp_Dir} -mtime +${KeepDay} |grep ${CMS_TmpFile}`

for list in ${olddb_file}
do
rm -f ${list}
done

olddb_file=""

# old file(tmp Dir for mysql)
olddb_file=`find ${Tmp_Dir} -mtime +${KeepDay} |grep ${DB_TmpFile}`

for list in ${olddb_file}
do
rm -f ${list}
done

if [ -f ${Backup_Dir}/${CMS_BakFile}.tar.gz ] ; then
echo "cms backup file ${Backup_Dir}/${CMS_BakFile}.tar.gz ... successful"
fi

環境によって変更箇所を説明


# backup date
KeepDay=14

バックアップを保持する日数(この場合は14日は保管する)


# backup directory
Backup_Dir="/mnt/samba/backup/wordpress"

バックアップを出力する日数


# tmp directory
Tmp_Dir="/var/tmp"

バックアップ作業用の一時ディレクトリ


# MySQL User
DB_User="cms"

Wordpress用にMySQLのユーザー名


# MySQL Passwd
DB_Pass="passwd"

Wordpress用にMySQLのユーザー名のパスワード


# MySQL database DB_Name="cms"

Wordpress用のデータベース名


# MySQL tmp backup file DB_TmpFile=${DB_Name}"Mysql"

データベースのバックファイルの作業用ファイル名


# CMS_directory CMS_Dir=/var/www/html/cms

コンテンツの保存先


# CMS tmp file CMS_TmpFile=${DB_Name}"www"

コンテンツのバックファイル作業用ファイル名

スポンサーリンク

0
0