1 views
実現させる機能
USB外付ハードディスク(4TB)にサーバーのバックアップを毎晩自動で取っています。家族全員の共有データは、USB外付ハードディスク(1TB)に各自でバックアップを取るように指示しています。なので、サーバーのお守りを任されている私の責任は重大です。サーバーがダウンすると家族全員がデーターにアクセスできなくなるからです。そこで、サーバーを1時間で復元する(=壊れる前日の状態にまで戻す)ために、サーバーのバックアップを毎晩取っているというわけです。以下はその手順です。
事前準備
※CentOS 7 でNTFS形式のUSB外付けハードディスクを追加(fuse-ntfs-3g)設定が済んでいること
※CentOS 7 をWindowsのファイルサーバーにする(Samba)設定が導入済であること
バックアップの導入手順
[root@ufuso ~]# mkdir /mnt/usbhd4tb/backup/ce70
← サーバーのバックアップ先を作成します。「/mnt/usbhd4tb/backup/ce70」は例示。
[root@ufuso ~]# yum -y install rsync ← バックアップに必要なrsyncのインストール
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
パッケージ rsync-3.0.9-15.el7.x86_64 はインストール済みか最新バージョンです
何もしません ← すでにインストール済み。
[root@ufuso ~]# vi /etc/rsync_exclude.lst ← バックアップを取るフォルダやファイ
ルの一覧リストを、「rsync_exclude.lst」という名称で作成する。
- /var/tmp/* ← 「/var/tmp/」のフォルダの中身をすべて(*)バックアップから除外
(-)する。
+ /boot/*** ← 「/boot/」のフォルダの中身をすべて(***)バックアップに加える(+)
以下同じ。
+ /etc/***
+ /lib/***
+ /bin/***
+ /sbin/***
+ /usr/***
+ /var/***
+ /home/***
+ /root/***
- * ← すべてのフォルダとファイルを(*)バックアップから除外(-)する。
※上記一覧の意味は、まず、同期するフォルダ内でも対象外にするサブフォルダがあ
れば明記し、その後同期するフォルダを明記、最後に明記されていないフォルダやフ
ァイルはすべて同期の対象外とする、である。
[root@ufuso ~]# rsync -avn --exclude-from=/etc/rsync_exclude.lst / /mnt/usbhd4tb/backup/ce70/
← ファイルのバックアップがうまくいくかテストする。
sending incremental file list
./
bin/
bin/alsaunmute
・・・
・・・
・・・
var/yp/
var/yp/nicknames
var/yp/binding/
sent 4000512 bytes received 431969 bytes 81329.93 bytes/sec
total size is 3645099787 speedup is 822.36 (DRY RUN)← 「(DRY RUN)」は、上記
-avnのオプションにn(テストラン)があるので、同期を行わず対象フォルダやファイルを
一覧表示しただけ、という意味。
|
■USB外付ハードディスクにサーバー全体をバックアップ
[root@ufuso ~]# rsync -av --exclude-from=/etc/rsync_exclude.lst / /mnt/usbhd4tb/backup/ce70/ ← rsync_exclude.lstに従って、サーバーのバックアップをce70フォルダに保存 sending incremental file list ./ bin/ bin/alsaunmute bin/arch ・・・ ・・・ ・・・ var/yp/ sent 5024084 bytes received 566331 bytes 115266.29 bytes/sec total size is 4683967496 speedup is 837.86 (DRY RUN) |
■自動バックアップの設定(crontab)
[root@ufuso ~]# yum -y install cronie-noanacron ← crontabをインストール インストール: cronie-noanacron.x86_64 0:1.4.11-11.el7 完了しました! [root@ufuso~]# vi /etc/crontab ← crontabに設定を追加する。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command to be executed # DDNS Dynamic DO!.jp Update 0 8 2 * * root wget -q -O - 'http://free.ddo.jp/dnsupdate.php?dn=your.ddo.jp domain&pw=your-password 0 4 * * * root rsync -av --exclude-from=/etc/rsync_exclude.lst / /mnt/usbhd4tb/backup/ce70/ ← 毎日午前4時に同期(差分コピー)を取るように設定を追加。 |
始めまして、centosの初心者です。サーバー設定とか探したところ、こちらのサイトをたどりついた。たいへん分かりやすく参考にさせていただいております。申し訳ございませんが、本当に初心者の質問です、rsyncコマンドを使ってバックアップをうまくできましたが、今度は復元作業はわかりません、バックアップしたデータの復元作業をお教えいただければ幸いです。
teiei 様、コメントご質問ありごとうございます。
復元作業は、バックアップで使用したコピー元、コピー先を逆にすれば復元されます。つまり、上記掲載コマンドを例に説明しますと、「rsync -avn –exclude-from=/etc/rsync_exclude.lst / /mnt/usbhd4tb/backup/ce70/」とコマンドしてバックアップを取りましたので、これを「rsync -avn /mnt/usbhd4tb/backup/ce70/ /」とすれば復元されます。
ただ、これで100%復元できるのはデータファイルだけで、webサーバーやmailサーバーなどのアプリケーションの復旧には、さらなる作業(コマンド入力)が必要でした。復元作業をしたけどソフトが動かないという場合には、具体的にご質問をいただければお役に立てるかもしれません。
頑張ってください。
tuさん、早速のご回答ありがとうございます。なるほど、逆にすれば復元ですね、勉強になりました。いまもう一つ問題遭遇しました、先日、サーバーは突然起動出来なくなりました、初心者なので、なんの問題起きたのまたくわかりません、せっかくバックアップしたデータの復元作業もわかりませんので、結局centos7をインストールしなおしにしました、設定とかも最初から設定しなおししました。起動できない時の対策方法はあるのでしょうか?
CentOSが起動できない場合には、CentOSのインストール画面で3行目に出てくる「Troubleshooting」を選択すると修復でききる場合があります。修復の可能性が高くないのは、起動しない原因の半分以上がハードの問題だからです。起動しない原因がOSの問題であれば、何らかの設定誤りなので、ひとつずつトラブルシューティングするしかありませんが、時間的には再インストールのほうが確実で短時間で済みます。また、設定を先にマスターしないとトラブルシューティングを実施しても修復できませんので、初心者の方には再インストール&再設定の経験を積むことで早くベテランになることをお勧めします。