WordPressサイト保守など、フルバックアップを取得する際にファイル名に日付・バージョン番号を付けて保存する作業が地味に面倒でしたので、シェルスクリプトで日付・バージョン番号を付けてフルバックアップを取得するサンプルを作りました。
フルバックアップ取得サンプル
スクリプト
以下のコードを “backup.sh” など任意のファイル名で保存します。
#!/bin/bash
# バックアップ日
backup_date=$1
# バージョン番号
version_num=$2
# バックアップ番号
backup_num=${backup_date}${version_num}
# 日付未指定の場合に設定
if [ -z $backup_date ]; then
backup_date=`date "+%Y%m%d"`
version_num='01'
backup_num=${backup_date}${version_num}
fi
# ドメイン
domain='example.com'
# バックアップ対象ディレクトリ
target_dir=${HOME}'/example.com/public_html/'
# DB_HOST
db_host='mysql.example.com'
# DB_NAME
db_name='example_name'
# DB_USER
db_user='example_user'
# DB_PASS
db_pass='pass1234'
# バックアップ処理実行
mkdir -p $HOME/backup/${domain}/${backup_num}/${backup_num}_${domain}
rsync -av ${target_dir} $HOME/backup/${domain}/${backup_num}/${backup_num}_${domain}/
cd $HOME/backup/${domain}/${backup_num}
tar zcvf ${backup_num}_${domain}.tar.gz ${backup_num}_${domain}/
rm -fr ${backup_num}_${domain}
mysqldump --no-tablespaces -u${db_user} -p${db_pass} -h${db_host} ${db_name} > ~/backup/${domain}/${backup_num}/${backup_num}_${db_name}.sql
ls -alh
スクリプト実行
ファイル名に実行日を付けて保存する
$ /bin/bash $HOME/shell/backup.sh
上記コマンドを実行すると下記のようにバックアップファイルが保存されます
~/backup/example.com/2022062201/2022062201_example.com.tar.gz ~/backup/example.com/2022062201/2022062201_example_name.sql
ファイル名に任意の日付とバージョン番号を付けて保存する
引数で日付の「20220622」とバージョン番号の「02」を渡して実行します。
$ /bin/bash $HOME/shell/backup.sh 20220622 02
上記コマンドを実行すると下記のようにバックアップファイルが保存されます
~/backup/example.com/2022062202/2022062202_example.com.tar.gz ~/backup/example.com/2022062202/2022062202_example_name.sql
動作環境情報
"エックスサーバー" スタンダード(旧X10) "MariaDB" 10.5 GNU bash, バージョン 4.2.46(2)-release (x86_64-redhat-linux-gnu)
コメント