#!/usr/bin/perl # 定义路径变量, 需要备份的文件 $depot = "G:\\backup"; $code = "E:\code\archieve"; $thispl = "E:\\script\\savefile.pl"; $servo = "E:\\script\\servo"; $ssl = "E:\\script\\ssl"; $contact = "E:\\fnems\\contact"; $wikilib = "H:\\webpage\\wiki"; $trace = "E:\\var\\trace\\trace_log.txt"; $misc = "E:\\fnems\\*.txt"; $line = "- - - - - - - - - - - - - - - - - - - - -\n"; system("cls"); print "\n\n$line"; # 上一次备份的时间 $last = 0; open(hf, "< last.txt"); $last = ; ($hour, $mday, $mon, $year) = (localtime($last))[2, 3, 4, 5]; $year += 1900; $mon = $mon % 12 + 1; print " Last save: $year-$mon-$mday, $hour o'clock\n"; ($hour, $mday, $mon, $year) = (localtime())[2, 3, 4, 5]; $year += 1900; $mon = $mon % 12 + 1; print " Today is $year-$mon-$mday.\n"; close(hf); $timeoff = time()-$last; if( !(($timeoff > 5*23*3600) && ($hour > 17) || ($timeoff > 5*24*3600)) ) { print " need not to backup\n"; $sleeptime = 2; # if($timeoff > 3.7*24*3600) { # print "\n ** mind that if you have files to backup,\n"; # print " you're supposed to put those under 'misc' directory.\n"; # $sleeptime = 6; # } print "$line\n"; sleep($sleeptime); exit; } print " going to backup...\n\n"; print "$line\n"; sleep(2); # 取得日期,生成备份文件名称 ($mday, $mon, $year) = (localtime())[3, 4, 5]; $year += 1900; $mon = $mon % 12 + 1; $dt = sprintf("%4d%02d%02d", $year, $mon, $mday); $tm = sprintf("%02d:%02d:%02d", $hour, $min, $sec); $fname = "BackUp$dt"; # 制作备份文件临时目录 mkdir($fname); system("del /q $fname\\*"); # 备份文件 printf " build directory structure...\n"; mkdir(".\\$fname\\config"); mkdir(".\\$fname\\misc"); mkdir(".\\$fname\\var"); # mkdir(".\\$fname\\code"); printf " backup misc files...\n"; system("copy $thispl $fname\\config\\savefile.pl"); system("copy $trace $fname\\var\\"); print " backup servo scripts...\n"; system("xcopy /S /Q $servo $fname\\php_servo\\"); system("xcopy /S /Q $ssl $fname\\php_servo_ssl\\"); print " backup contact files...\n"; system("xcopy /S /Q $contact $fname\\contact\\"); print " backup code files...\n"; system("xcopy /S /Q $code $fname\\code"); print " backup misc files...\n"; system("copy /Y $misc $fname\\misc\\"); # print " backup wikipedia files...\n"; # system("xcopy /S /Q $wikilib $fname\\web_wiki\\"); # sleep to wait for mysqld print " wait for mysqld service to startup...\n"; sleep(4); system("mysqldump -u ***_root --password=**** servo > .\\$fname\\MySQL_Servo$dt.sql"); # 打包 system("tar -cf $fname.tar $fname"); system("gzip -9 $fname.tar"); sleep(1); print " package done. going to save and clean up.\n"; # 删除备份文件临时目录,转移备份文件 system("rmdir/s /q $fname"); system("move $fname.tar.gz $depot"); open(hf, "> last.txt"); print hf time(); close(hf);