openSUSEでサーバー構築 ; サーバーのバックアップ・復元

1. サーバーのバックアップ

1.1 /srv/www/配下のバックアップ

①バックアップスクリプトファイルの作成

# cd /srv/www/system/
# vi www_backup.sh
www_backup.shの内容

#!/bin/bash

#日付処理
TODAY=`/bin/date +%Y%m%d`
DAY_AGO=`/bin/date –date ‘7day ago’ +%Y%m%d`

#バックアップ元
HTML_DIR=”/srv/www/html”
SYSTEM_DIR=”/srv/www/system”

#出力ファイル
BACKUP_DIR=”/srv/www/backup/www_bak” #バックアップファイル出力先
RUN_FLAG=”/srv/www/backup/www_bak/www_flag” 

/bin/mkdir -p ${BACKUP_DIR}
/bin/touch ${RUN_FLAG}

/bin/tar vfcz ${BACKUP_DIR}/www_back_${TODAY}.tar.gz ${HTML_DIR} ${SYSTEM_DIR}

/bin/chmod 644 ${BACKUP_DIR}/www_back_${TODAY}.tar.gz

if [ -f ${BACKUP_DIR}/www_back_${DAY_AGO}.tar.gz ];
then
/bin/rm -f ${BACKUP_DIR}/www_back_${DAY_AGO}.tar.gz
fi

/bin/rm -f ${RUN_FLAG}

# chmod 700 www_backup.sh
➁格納するディレクトリを作成
# mkdir -p /srv/www/backup/www_bak
# chmod 777 /srv/www/backup/www_bak
➂バックアップを実行
# /srv/www/system/www_backup.sh

④cron に設定を追加し、定期的にバックアップ

# crontab -e
0 6 * * * /srv/www/system/www_backup.sh > /dev/null 2>&1

1.2. MySQLデータベースバックアップ

①バックアップスクリプトファイルの作成

# cd /srv/www/system
# vi db_my_backup.sh
db_my_backup.shの内容

#!/bin/bash

export LANG=ja_JP.eucJP
export PATH=”$PATH”:/usr/bin
export MYSQL_HOME=/usr/bin
export MYLIB=/usr/lib64/mysql
export MANPATH=”${MANPATH}”:${MYSQL_HOME}/man
export LD_LIBRARY_PATH=”${LD_LIBRARY_PATH}”:”${MYLIB}”

#日付処理
TIME_STRING=`/bin/date ‘+%Y%m%d’`
DAY_AGO=`/bin/date –date ‘7day ago’ +%Y%m%d`

#出力ファイル
DB_BAK_DIR=”/srv/www/backup/db_bak” #バックアップファイル出力先
RUN_FLAG=”${DB_BAK_DIR}/db_my_flag”

MYSQL_BACKUP_FILE=${DB_BAK_DIR}/mysql_backup_”${TIME_STRING}”.dump

/bin/mkdir -p ${DB_BAK_DIR}
/bin/touch ${RUN_FLAG}

mysqldump -u${MYUSER} -p${MYPASS} –all-databases > ${MYSQL_BACKUP_FILE}
/bin/gzip ${MYSQL_BACKUP_FILE}

if [ -f ${DB_BAK_DIR}/${MT_DB}”${DAY_AGO}”.dump.gz ];
then
/bin/rm -f ${DB_BAK_DIR}/${MT_DB}”${DAY_AGO}”.dump.gz
fi

if [ -f ${DB_BAK_DIR}/${XOOPS_DB}”${DAY_AGO}”.dump.gz ];
then
/bin/rm -f ${DB_BAK_DIR}/${XOOPS_DB}”${DAY_AGO}”.dump.gz
fi

if [ -f ${DB_BAK_DIR}/${GEEKLOG_DB}”${DAY_AGO}”.dump.gz ];
then
/bin/rm -f ${DB_BAK_DIR}/${GEEKLOG_DB}”${DAY_AGO}”.dump.gz
fi

/bin/rm -f ${RUN_FLAG}

# chmod 700 db_my_backup.sh
➁格納するディレクトリを作成
# mkdir -p /srv/www/backup/db_bak
# chmod 777 /srv/www/backup/db_bak
③バックアップ実行
# /srv/www/system/db_my_backup.sh
④cron に設定し、定期的にバックアップ
# crontab -e
0 7 * * * /srv/www/system/db_my_backup.sh > /dev/null 2>&1

2.データの復元

2.1 www配下のバックアップファイルの復元

① リストアに使用するバックアップファイルをサーバーの「/(ルート)」ディレクトリへ保存する
# cd /srv/www/backup/www_bak
# cp www_back_[time-stamp].tar.gz /
② ファイルを展開する
# cd /
# tar zxvf www_back_[time-stamp].tar.gz

2.2 MySQL のデータを復元する

① データベースバックアップファイルを任意のディレクトリに保存し、
(例では「/srv/www/backup/db_bak」ディレクトリです)データを解凍します
# cd /srv/www/backup/db_bak
# gzip -d mysql_backup_[time-stamp].dump.gz
② MySQLデータベースをリストア
# mysql -u root -p < mysql_backup_[time-stamp].dump
Enter password: ←MySQL rootのパスワード
タイトルとURLをコピーしました