こちらに記載した通り、Lightsailのインスタンスが破損してしまい、バックアップも取っておらず復旧に手間取りましたので、各種必要データを定期的にバックアップするようにしたいと思います。
前提条件
シェルスクリプトでバックアップを行います。以降はホームディレクトリに backup ディレクトリが存在する前提で記載します。
DBバックアップ
DBのバックアップスクリプトです。一旦何も考えずに全てのデータベースをバックアップします。
- username:自身のユーザ名に置き換え
#!/bin/bash
#Backup先のディレクトリ設定
BK_DIR=/home/username/backup
#日時設定
DATE=$(date +%Y%m%d_%H%M%S)
#バックアップ取得
mariadb-dump --all-databases > ${BK_DIR}/db_backup_${DATE}.sql
echo "Backup completed at ${BK_DIR}/db_backup_${DATE}.sql"
Webサーバディレクトリバックアップ
Webサーバのディレクトリ(DocumentRoot)のバックアップです。
- username:自身のユーザ名に置き換え
- SRC_DIR:自身の環境のDocumentRootパスに置き換え
#!/bin/bash
#Backup先のディレクトリ設定
BK_DIR=/home/username/backup
#バックアップ元のディレクトリ設定
SRC_DIR=/var/www/html/
#日時設定
DATE=$(date +%Y%m%d_%H%M%S)
#バックアップ取得
zip -r ${BK_DIR}/blog_backup_${DATE}.zip ${SRC_DIR}
echo "Backup completed at ${BK_DIR}/blog_backup_${DATE}.zip"
Webサーバ設定ファイルバックアップ
Apacheの設定ファイルのバックアップです。必要なconfファイルは適宜追加してください。下記は最低限 httpd.conf と ssl.conf のみバックアップしています。
- username:自身のユーザ名に置き換え
#!/bin/bash
#Backup先のディレクトリ設定
BK_DIR=/home/username/backup
#バックアップ元のディレクトリ設定
SRC_DIR=/etc/httpd
#日時設定
DATE=$(date +%Y%m%d_%H%M%S)
#バックアップ取得
zip -r ${BK_DIR}/httpd_backup_${DATE}.zip ${SRC_DIR}/conf/httpd.conf ${SRC_DIR}/conf.d/ssl.conf
echo "Backup completed at ${BK_DIR}/httpd_backup_${DATE}.zip"
SSL証明書関係のバックアップ
Let’s Encrypt関連ファイルのバックアップです。
- username:自身のユーザ名に置き換え
#!/bin/bash
#Backup先のディレクトリ設定
BK_DIR=/home/username/backup
#バックアップ元のディレクトリ設定
SRC_DIR=/etc/letsencrypt
#日時設定
DATE=$(date +%Y%m%d_%H%M%S)
#バックアップ取得
zip -r ${BK_DIR}/ssl_backup_${DATE}.zip ${SRC_DIR}
echo "Backup completed at ${BK_DIR}/ssl_backup_${DATE}.zip"
動作確認
スクリプトを作成したら、chmod 700 とかで実行権限を付与して動作確認を行います。
無事動作したら、cronなどで定期的にバックアップを取るようにするのと、rsync等で別サーバと同期できるようにするとより良いかと思います。
著者について