#! /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)
沒有留言:
張貼留言