任務目標 : 自動及同歩化完成異地備份所有使用者家目錄.
於Host OS(OpenSUSE11), 建立一指令稿(使用bash) backup.sh 存放於/root/bin/內, 工作內容是對/home目錄進行增量備份(incremental backup), 且必須滿足以下需求:
a) 指令稿內必須使用tar 指令進行備份.
b) 指令稿內必須使用(定義及呼叫)函式(function)
c) 於每週一時, 指令稿必須進行完整備份(full backup).
d) 自每週二至週五, 指令稿必須進行增量備份(incremental backup), 只備份當日有異動的部份資料.
e) 指令稿內以date找出備份當日的星期名稱(如 Sun,Mon,Tue,...), 以便能判斷出必須採用的備份方法.
f) 使用一快照檔案(/var/log/backup/snapshot_file), 以便進行 backup 時的依據.
g) 對產生的備份檔須符合以下格式:
* Full backup: /var/backup/full-YYY-MM-DD.tar.gz
* Differential backup: /var/backup/incremental-YYYY-MM-DD.tar.gz (YYY-MM-DD 是備份當日的格式 (如. 2009-12-18).
h) 若進行備份失敗, 該指令稿必須能發出 email 給 root@localhost. 主旨為"Backup failed !", email內容可不需要指定.
i) 於指令稿內使用rsync進行同歩Host OS(OpenSUSE11)的/var/backup目錄, push 到 Guest OS(SLES10)的 ~/backup目錄內,以實現異地備份任務.
j) 使用例行式排程於週一至週五18:30執行backup.sh.
k) 注意事項 :
* 預於2009/12/24進行驗收
* 請盡可能自己編寫(勿抄襲他人的). 若有問題請於班版提出.
祝 大家順利完成. Guru
#!/bin/bash
DOW=`date +%a` ->將日期顯示改為 Mon、..作為變數
[ -d /var/log/backup ] || mkdir /var/log/backup ->判斷 是否有此directory
[ -d /var/backup ] || mkdir /var/backup
#full (){ getfacl -R /home > /home/acls-`date +%F`
# tar -czvf /var/backup/backup-full-`date +%F`.tar.gz /home | tee /var/log/backup/last-backup > /var/log/backup/backup-`date +%F`.log
# touch /var/log/backup/last-backup
# x=`echo $?`
# }
->每次皆會參考 snapshot 作為複製檔案的依據,故進行Full 之前,先刪除snapshot檔來進行完全備份。
full (){ getfacl -R /home > /home/acls-`date +%F`
rm -rf /var/backup/snapshot_file
tar -czv -g /var/backup/snapshot_file -f /var/backup/backup-full-`date +%F`.tar.gz /home | tee /var/log/backup/last-backup > /var/log/backup/backup-`date +%F`.log
touch /var/log/backup/last-backup
x=`echo $?`
}
->增量備份,參考snapshot_file檔,來備份最新的檔案。
incr (){ getfacl -R /home > /home/acls-`date +%F`
tar -czv -g /var/backup/snapshot_file -f /var/backup/backup-incremental-`date +%F`.tar.gz /home | tee /var/log/backup/last-backup > /var/log/backup/backup-`date +%F`.log
x=`echo $?`
}
#diff (){ getfacl -R /home > /home/acls-`date +%F`
# find /home -type f -newer /var/log/backup/last-backup -print0 | tar --null -cvf /tmp/backup-diff-`date +%F`.tar -T - > /var/log/backup/backup-`date +%F`.log
# x=`echo $?`
# }
->利用case 來判斷 執行 Full or Incremental backup!
case "$DOW" in
Mon) full ;;
Tue) incr ;;
Wed) incr ;;
Thu) incr ;;
Fri) incr ;;
esac
if [ $x -ne 0 ] ; then
echo "" | mail -s "Backup failed !" root
fi
#########-------------Remote rsync backup--------#############(以下須手動執行)
# 1. input --> ssh-keygen -t dsa -N "" ->產生金鑰
# 2. Remote computer need--> mkdir ~/backup ->建立遠端備份目錄
#########------------------------Run---------------------#############(以下註解拿掉即可執行)
echo -n "Please input Remote IP address : "
read IP
# echo Please wait....
# sleep 2
# scp /root/.ssh/id_dsa.pub root@$IP:/root/.ssh/authorized_keys
->將剛產生的金鑰複製傳送到遠端電腦。之後登入,自動信任此帳戶!
echo Please wait....
sleep 2
->判斷如果,備份 執行成功,則複製傳送到遠端電腦,進行異地備份。
if [ $x -eq 0 ] ; then
rsync -azv /var/backup -e ssh root@$IP:~/backup
echo "Test Only^^ " | mail -s "Backup Succeed" root
fi
###############################################################
# if [ $x -eq 0 ] ; then
# echo "Test Only " | mail -s "Backup Succeed" root
# fi
## result : nl /var/log/backup/last-backup = = tar -tvf /backup-full .. .tar | nl
## in other to have /var/log/backup/last-backup file, modify your date to friday first !!
##---------------------Create-Cron ----------------##
## 以下提供兩種方法!
## touch /etc/cron.d/incre-cron
## echo '30 18 * * 1-5 root /root/bin/Incremental_backup.sh' >> incre-cron
# touch incre-cron
# echo '30 18 * * 1-5 root /root/bin/Incremental_backup.sh' >> incre-cron
# crontab incre-cron
###################################
2009年12月21日 星期一
2009年12月7日 星期一
設定工作排程(cron)將Quota狀態以E-mail寄送到管理者信箱
本次目標為:
- 設定一個工作排程(檔名為rep_quota),於禮拜一到禮拜五的晚上,12點30分將Quota的狀態輸出到/root/quota.log裡面和透過E-mail傳送到管理者的信箱(gd9qwq@gmail.com)。
- 需使用Shell Script執行此動作,並將程式存放於/root/bin底下,檔名為rep_quota.sh。
- 小提示:工作排程需放置於/etc/cron.d目錄底下。
利用 sudo 來賦予使用者管理權限
*利用/etc/pam.d/su組態檔來指定某使用者,切換使用者到Supper User(su)時, 不需輸入密碼。
使用時機:當要讓某使用者去更改系統內的設定時,不需知道root的密碼而切換到root帳戶去做更改。
缺點:由於root身分可以完全的更改系統內的設定,如果使用者變更了root的密碼,那麼會造成原本管理者無法登入。
在第二部分,將會以Supper User do來解決此缺點,這邊會利用賦予使用者管理apache2 Server的所有權限,而不需輸入密碼。
第一部分:


第二部分:利用sudo更安全的設定。
使用時機:當要讓某使用者去更改系統內的設定時,不需知道root的密碼而切換到root帳戶去做更改。
缺點:由於root身分可以完全的更改系統內的設定,如果使用者變更了root的密碼,那麼會造成原本管理者無法登入。
在第二部分,將會以Supper User do來解決此缺點,這邊會利用賦予使用者管理apache2 Server的所有權限,而不需輸入密碼。
第一部分:
由於第五行 auth include common-auth 用於檢查帳戶設定,故需要新增在此設定之上,在此設定之下的話,則無作用。


第二部分:利用sudo更安全的設定。
訂閱:
文章 (Atom)
標籤
- 上課實作 (7)
- 高級實作 (3)
- 雜貨店 (6)
- Exchange Server (3)
- grub組態設定 (1)
- IIS架站 (1)
- Juniper_SSG (4)
- L2 switch (2)
- L3 switch (4)
- Server2003 (6)
- Server2008 (5)
- Shell Script Programming (3)
- TCP/IP (1)
- Wirless_Aruba (4)









