リナックス豆知識

CentOS 7,8でサイトバックアップ及び復元

投稿者情報

  • 運営局 投稿
  • 投稿日

コンテンツ情報

本文内容

バックアップまたは復旧(復元)作業ははroot権限で実施してください。

一般的にホームページをバックアップする為には、2つのバックアップが必要です。

一つ目はデータで、二つ目はDBです。 


1.バックアップする

# tar cvfpz /backup/www/home_bak.tar.gz /var/www/html


/var/www/html このパスはバックアップするディレクトリ名です。


/backup/www/home_bak.tar.gzはバックアップファイルです。


サイトのデータの容量が少なければ特に問題ありませんが、容量が多いと作業時間がが長くかかるという欠点があります。


(2) rsyncを利用したデータに差分バックアップ


差分バックアップとは、以前のバックアップしたデータを元にして、変更されたデータだけを追加してバックアップを作る方法です。


# rsync -avp --delete /var/www/html/ /backup/www/home_bak


この差分バックアップはサイトのデータの容量が多い場合、素早くバックアップできるメリットがあります。


(3) データベース全体バックアップ


# mysqldump-u[DBのID] -p [DB名] > [バックアップファイル名] 


DB パスワードを入れると作業が行われます。


DBバックアップは、すべてのバックアップを基本的に実行します。


2.復旧(復元)する


(1) TARを利用したデータ全体の復旧


# tar -xvf home_bak.tar.gz -C /


home_bak.tar.gzは、圧縮ファイル名であり-Cオプションの後には、圧縮を解凍するパスを入力します。


(2)rsyncを利用してバックアップした資料は、cpコマンドで復旧(復元)出来ます。


# cp /backup/www/home_bak /var/www/html/ -rf


(3) データベースの復旧(復元)


# mysql-u [DBのID] - p [DB名] < [DBバックアップファイル名]


DBパスワード入力


次はバックアップを自動化するCRON(クロン)設定を説明します。。


実行スクリプト作成します。


# nano /root/backup.sh


簡単なバックアップが可能なスクリプトです。


========= backup.sh =================================================================


rsync -avp /var/www/html/ /backup/www/home_bak


======================================================================================

実行可能なファイルにします。


# chmod 100 /root/backup.sh


cronでスケジュールに従って自動バックアップを実行出来るようにします。


# crontab -e
0 3 * * * /root/backup.sh


上記の内容を説明しますと、毎日3時00分に rootbackup.sh を自動的に実行せよ!とのコマンドです。


バックアップもやはり負荷がかかるので、通常は早朝に行うことをおすすめします。


よく使うbackup.shスクリプト例題


(1)データは差分バックアップし、データベースは全体バックアップして、3日間バックアップファイルを維持するスクリプトです。


========= /root/backup.sh ======================================================


#!/bin/sh


DATE=`date +"%Y%m%d"`


YES_DATE=`date --date '1 days ago' +"%Y%m%d"`


PREV_DATE=`date --date '3 days ago' +"%Y%m%d"`


/usr/bin/mysqldump -uroot -pDB비밀번호 DB명 > /backup/mysql/mysql_db_bak_${DATE}.sql


rm -rf /backup/mysql/mysql_db_bak_${PREV_DATE}.sql




cp -rf /backup/www/home_bak /backup/www/home_bak_${YES_DATE}


rsync -avp --delete /var/www/html/ /backup/www/home_bak


rm -rf /backup/www/home_bak_${PREV_DATE}


===============================================================================


(2) データとデータベースの両方バックアップして、3日間バックアップファイルを維持するスクリプトです。



========= backup.sh ===============================================================


#!/bin/sh


DATE=`date +"%Y%m%d"`


YES_DATE=`date --date '1 days ago' +"%Y%m%d"`


PREV_DATE=`date --date '3 days ago' +"%Y%m%d"`


DOW='date + "%a"'




/usr/bin/mysqldump -uroot -pDBパスワード DB名 > /backup/mysql/mysql_db_bak_${DATE}.sql


rm -rf /backup/mysql/mysql_db_bak_${PREV_DATE}.sql




tar cvfpz /backup/www/home_bak_${DATE}.tar.gz /var/www/html


rm -rf /backup/www/home_bak_${PREV_DATE}tar.gz


===============================================================================


[この投稿は運営局様により 2021-03-04 21:21:32 WEBエンジニアから 移動 される。]

関連資料

新着投稿


  • 投稿がありません。

新着書込み


  • 書込みがありません。
アラート 0