#! /usr/bin/perl ## 學藉系統備份程式perl版 by 二林國小 村仔 2009.07;2010.07修正 ## 功用:備份、FTP備份檔到遠方主機、更新學籍系統、更新系統 ## 適用環境 ubuntu 主機。 $conf{'chktime'}='Y';##要不要進行校時 $conf{'bakup'}='Y';##要不要備份某些目錄, 設定值 Y/N $conf{'ftp'}='Y';##要不要透過ftp將資料送到遠方主機 設定值 Y/N $conf{'upsfs'}='Y';##要不要更新學藉系統, 設定值 Y/N $conf{'upSYS'}='Y';##要不要更新系統, 設定值 Y/N #每類型備份檔案最多數量 $lim=12; ## 學藉系統路徑,保留最後斜線 $conf{'sfspath'}='/home/webadmin/html/sfs3/'; ## 欲備份目錄及備份檔的前置字元,注意不要破壞格式,可以自行增添多組 ## $BB{前置字元}='備份目錄';不須有後面的斜線 $BB{'SFS_DB'}="/var/lib/mysql/sfs3"; $BB{'SFS_data'}="/home/webadmin/html/sfs3/data"; $ftp{'host'}='192.168.11.6';##遠方主機 $ftp{'path'}='BB/';##登入後檔案放置目錄 $ftp{'user'}='edu';##遠方主機帳號 $ftp{'pass'}='123';##遠方主機密碼 ## 學藉系統下載網址 $conf{'url'}='http://sfscvs.tcc.edu.tw/sfs_stable.tar.gz'; #備份檔放置目錄 $BAK="/home/webadmin/baksfs/"; ##----------以下不用修改----------------### ##關閉防火牆 #`/etc/init.d/firewall stop`; ###----0.校時----### if ($conf{'chktime'} eq 'Y'){ `/usr/sbin/ntpdate time.stdtime.gov.tw > /dev/null `; `/usr/sbin/ntpdate time.stdtime.gov.tw > /dev/null `; `/usr/sbin/ntpdate time.stdtime.gov.tw > /dev/null `; } ###----1.檢查備份目錄存在否----### if (!-e $BAK) { `/bin/mkdir -p $BAK`; `/bin/sync `; `/bin/sync `; } ###----2.關閉apache及MySQL----### `/etc/init.d/apache2 stop `; `/etc/init.d/mysql stop `; ###----3.設定作業時間字串----### $TT=`date "+%Y%m%d_%H%M%S"`; ## perl用chomp函數去掉結尾的CR/LF chomp $TT; ##-----4.備份檔案作業、刪除多餘備份檔-----------##### if ($conf{'bakup'} eq 'Y'){ while (($key, $value)=each %BB) { $fi=$BAK.$key."_".$TT.".tgz"; @total = split('/',$value); $data=pop @total; $path = join '/' , @total; `cd $path ;/bin/tar -zcf $fi $data `; `/bin/sync `; `/bin/sync `; } ##刪除多餘備份檔作業 while (($key, $value)=each %BB) { $num=`/bin/ls $BAK$key* | /usr/bin/wc -l`; ## perl用chomp函數去掉結尾的CR/LF chomp $num; if ($num > $lim) { $delnum=$num-$lim; @dfiles=`/bin/ls $BAK$key* `; $i=0; while ($i < $delnum) { chomp $dfiles[$i]; unlink $dfiles[$i] if -e $dfiles[$i]; $i++; } } } } ##-----5.送檔案到ftp主機(只送本次)-----------##### if (($conf{'ftp'} eq 'Y') && ($conf{'bakup'} eq 'Y' ) ){ while (($key, $value)=each %BB) { $fi=$BAK.$key."_".$TT.".tgz"; `/usr/bin/ncftpput -u $ftp{user} -p $ftp{pass} $ftp{host} $ftp{path} $fi `; } } ##-----6.更新學籍系統-----------##### if ($conf{'upsfs'} eq 'Y'){ `cd /tmp;/usr/bin/wget -q $conf{'url'} `; `/bin/sync `; `/bin/sync `; # 判斷檔案是否存在 if (-e '/tmp/sfs_stable.tar.gz' ) { `cd /tmp;/bin/tar zxf sfs_stable.tar.gz`; `/bin/rm /tmp/setup.sh`; `/bin/rm /tmp/sfs3_stable/install.php`; `/bin/cp -a /tmp/sfs3_stable/* $conf{'sfspath'} `; `/bin/rm /tmp/sfs_stable.tar.gz`; `/bin/rm -rf /tmp/sfs3_stable`; `/bin/sync `; `/bin/sync `; } } ##-----7.更新系統檔案-----------##### if ($conf{'upSYS'} eq 'Y'){ `/usr/bin/apt-get update > /dev/null `; `/usr/bin/apt-get -y upgrade > /dev/null `; ## `/usr/bin/apt-get -y dist-upgrade > /dev/null `; `/usr/bin/apt-get autoclean > /dev/null `; `/bin/sync `; `/bin/sync `; } ##-----8.啟動apache及 MySQL-----------##### `/etc/init.d/apache2 start `; `/etc/init.d/mysql start `; # `/etc/init.d/firewall start`;
2010年12月30日 星期四
縣內備份程式
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言