第一章作業

3963 ワード

ある会社にはNFSサーバーがあります.中のデータは重要ですが、ハードディスクが壊れたら、データが失われます.今、リーダーは他の機械で周期的なタイミングバックアップをするように要求しています.要件は次のとおりです.
毎晩00時ちょうどにNFSサーバnfs 01にバックアップサイトプログラムディレクトリなどをパッケージ化し、rsyncコマンドでバックアップサーバbackupにプッシュしてバックアップ保存する(バックアップ構想は、IPアドレス+日付でローカルでパッケージ化してからrsyncを利用してバックアップサーバにプッシュすることができる).
具体的な要求は以下の通りである.
1)NFSサーバnfs 01とバックアップサーバbackupのバックアップディレクトリはすべて/backupでなければならない.
2)NFSサーバサイトディレクトリは(/var/www/html)と仮定する.3)NFSサーバスクリプトディレクトリは(/server/scripts)と仮定する.4)NFSサーバーサイトログディレクトリは(/app/logs)と仮定する.5)NFSサーバー個人プロファイルディレクトリパス(/etc/rc.d/rc.local);6)NFSサーバータイミングタスクファイルパス(/var/spool/cron/root);7)以上のファイルまたはディレクトリを(2-6条に示す)バックアップサーバbackupにプッシュする.8)NFSサーバーは7日以内のバックアップのみをローカルに保持する.9)バックアップサーバでバックアップ結果が正常かどうかを確認し、毎日のバックアップ結果を管理者ポストに送る.10)バックアップサーバは、先週の土曜日のデータを保持し、その他のバックアップは180日間のバックアップのみを保持します.

宿題の答え:


環境構築:


ステップ1:rsyncdを作成します.confプロファイル(バックアップサーバに配備)
[root@backup backup]# cat /etc/rsyncd.conf
#rsync_config
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
#hosts deny =10.0.0.0/24
auth users = rsync
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup
[nfs]
comment = "nfs dir by rsync"
path = /nfs

ステップ2:バックアップ・ディレクトリ管理ユーザーの作成
useradd -M -s /sbin/nologin rsync

ステップ3:バックアップディレクトリを作成し、所属グループと所属をrsyncユーザーに変更する
mkdir /backup
chown -R rsync. /backup

ステップ4:認証ファイルを作成し、権限を600に変更
echo "rsync:123" >> /etc/rsync.password
chmod 600 /etc/rsync.password

ステップ5:rsyncサービスの開始
rsync --deamon

クライアントの配備、認証ファイルの作成
echo "oldboy123" >> /etc/rsync.password
chmod 600 /etc/rsync.password

宿題の解答:1-7題


ストレージサーバでのスクリプトの使用

[root@nfs01 backup]# cat /server/scripts/nfs.sh 
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
ip=`ifconfig eth0|awk -F '[: ]+' 'NR==2 {print $4}'`
# , 1
date=`date -d "-1 day" +%F_%w`
name=$ip"_"$date
# 
if [ ! -d /backup/  ];then
   mkdir /backup
fi
# /backup/ 
cd / && tar zcf /backup/$name.tar.gz var/www/html server/scripts etc/rc.d/rc.local var/spool/cron/root app/logs
# /backup/ rsync 
rsync -az /backup/  [email protected]::backup --password-file=/etc/rsync.password
# 
find /backup -type f -mtime +7 |xargs rm -f

スケジュールタスクへのスクリプトの追加

[root@nfs01 backup]# crontab -l
#backup to rsync backup 
00 00 * * *  /bin/sh /servser/scripts/nfs.sh >/dev/null 2>&1
[root@nfs01 backup]# 

rsyncサーバでのスクリプトの使用(9-10題)

[root@backup backup]# cat /server/scripts/rsync.sh 
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# , 1 
date=`date -d "-1 day" +%F_%w`
name_file="10.0.0.31_"$date
# nfs , , 
if [ -f /backup/${name_file}.tar.gz ]; then
  echo " " > /backup/log.txt
  mail -s "${name_file}.tar.gz " [email protected] < /backup/log.txt
else
  echo " , , !" > /backup/log.txt
  mail -s "${name_file}.tar.gz " [email protected] < /backup/log.txt
fi
# 180 , 
find /backup/ -type f -name "*[0-4,6].tar.gz" -mtime +180 |xargs rm -f

スケジュールタスクへのスクリプトの追加

[root@backup backup]# crontab -l
#Monitor backup status and send mail to administrator
05 00 * * * /bin/sh /server/scripts/rsync.sh >/dev/null 2>&1
 ps: nfs 12 , rsync , , , 

転載先:https://www.cnblogs.com/yjiu1990/p/10508722.html