新聞發(fā)布
管理系統(tǒng)無(wú)人值守是所有網(wǎng)站運(yùn)維人員必須要操作的手段,有了無(wú)人值守運(yùn)維人員可以高效的管理更多的網(wǎng)站服務(wù)器,可以吧大量時(shí)間發(fā)在性能和安全上的管理,上一期《網(wǎng)站運(yùn)維數(shù)據(jù)備份方法介紹》中提到數(shù)據(jù)的兩種類別,今天小編給大家分享網(wǎng)站備份腳本編寫實(shí)現(xiàn)無(wú)人值守。
Windows下Mysql定期備份和定期清理 BAT腳本
Mysql的備份一定要導(dǎo)出SQL文件因?yàn)檫@樣能夠保證數(shù)據(jù)的正確性和完整性,如果直接使用winrar壓縮后果不開(kāi)設(shè)想;腳本使用 mysqldump 命令來(lái)備份一個(gè)指定的 Mysql 數(shù)據(jù)庫(kù)到一個(gè)文件,文件格式為 %dbname%-yyyyMMddHHmmss.sql,只保留近60天的備份。如果想定時(shí)執(zhí)行,在 Windows 中添加任務(wù)計(jì)劃即可。
首先是數(shù)據(jù)庫(kù)備份腳本backup.bat
@echo off C:\mysqldump.exe --user=root --password=4234432 gzblapp>D:\db_bak\superstardbbak\sqldata\%date%_gzblapp.sql C:\mysqldump.exe --user=windows1 --password=34534553 resourcesharing>D:\db_bak\rsdbbak\sqldata\%date%_resourcesharing.sql @echo on
說(shuō)明:寫腳本的時(shí)候一定要測(cè)試mysqldump命令能不能直接使用,不能使用的要配置path系統(tǒng)環(huán)境,不然命令腳本不能使用。
多數(shù)據(jù)庫(kù)清理的腳本clear.bat
@echo off set sqldir1="D:\db_bak\rsdbbak\sqldata" set sqldir2="D:\db_bak\superstardbbak\sqldata" set orgin_mon=%date:~5,2% set orgin_year=%date:~0,4% set d=%date:~8,2% set mon=%orgin_mon% set y=%orgin_year%
若是下一年的1、2月,則先加12,再在后面減去一個(gè)月和兩個(gè)月的時(shí)間
if %orgin_mon% lss 2 (set /a mon=%orgin_mon%+12 & set/a y=%orgin_year%-1) set monsago=1 set twomonsago=2
分別計(jì)算前一個(gè)月和兩個(gè)月前的日期,/a就是把字符串看作數(shù)字運(yùn)算
set /a m=%mon%-%monsago% set m2=%m% if %m% lss 10 (set m2=0%m%)
若月份是個(gè)位數(shù),則在前面加0輸出,因?yàn)樽鋈掌谧鲞\(yùn)算的時(shí)候算出的結(jié)果是個(gè)位的時(shí)候是不會(huì)在前面帶0的,
而日期后面匹配日期來(lái)刪除文件的時(shí)候數(shù)據(jù)庫(kù)文件中的日期字符串個(gè)位數(shù)是帶0的,如2017-08-09,當(dāng)8減去2的時(shí)候是等于6,所以必須湊0變成06
set /a m1=%mon%-%twomonsago% set m3=%m1% set monsagofile1=%y%-%m2%-%d%_resourcesharing.sql set twomonsagofile1=%y%-%m3%-%d%_resourcesharing.sql set monsagofile2=%y%-%m2%-%d%_gzblapp.sql set twomonsagofile2=%y%-%m3%-%d%_gzblapp.sql echo %twomonsagofile2%
刪除名為sqldir1路徑上面?zhèn)浞輸?shù)據(jù)庫(kù)上上個(gè)月之前的所有備份文件
for /f "delims=" %%i in ('dir/b/a-d %sqldir1% 2^>nul') do ( if %%i geq %twomonsagofile1% (if %%i lss %monsagofile1% (del %sqldir1%\%%i /f /q)) )
刪除名為sqldir2路徑上面?zhèn)浞輸?shù)據(jù)庫(kù)上上個(gè)月所有備份文件
for /f "delims=" %%j in ('dir/b/a-d %sqldir2% 2^>nul') do ( if %%j geq %twomonsagofile2% (if %%j lss %monsagofile2% (del %sqldir2%\%%j /f /q)) )
Windows下網(wǎng)站文件使用WinRAR定期備份和定期清理 BAT腳本
start c:\"Program Files"\winrar\rar a -k -r -s -m1 -agYYYYMMDD-{bak}-NN F:\BAK\ D:\WEB\
說(shuō)明:備份 D:\WEB這個(gè)文件夾 到 F:\bak文件夾
start c:\"Program Files"\winrar\rar a -k -r -s -m1 F:\BAK\每日備份.rar D:\WEB\
說(shuō)明:備份文件需要覆蓋上次生成的文件
set deltime=date:~0,10% forfiles.exe /p E:\ /s /m *.rar /d -7 /c "cmd /c del /s @path >>D:\log\deltime%.txt"
說(shuō)明:set deltime=date:~0,10%這句是取一個(gè)當(dāng)前時(shí)間的變量,forfiles.exe是系統(tǒng)文件,查找文件的
/P是定義查找的路徑
E:\是定義查找路徑E盤下面
/S是定義查找范圍包括子目錄
/M *.rar 定義查找*.rar的文件
/D 是當(dāng)前時(shí)間
-7 早于或者等于當(dāng)前時(shí)間減7天,也就是7天前
/C 是調(diào)用命令行CMD.EXE的命令
"cmd /c del /s @path >>D:\log\deltime%.txt" 這個(gè)是刪除查找到的文件,并且把刪除文件的文件名導(dǎo)出到
D:\log\deltime%.txt這個(gè)txt文檔
deltime%是系統(tǒng)變量,如果當(dāng)前時(shí)間是20140416,那么生成的文件就是D:\log\20140416.txt,其實(shí)導(dǎo)出這個(gè)列表只是為了方便查看刪除了那些東西
備注:當(dāng)然了首先需要安裝WINRAR壓縮軟件,把兩個(gè)批處理保存為bak.bat 和del.bat,前面是備份的,后面是刪除舊的備份文件。然后利用任務(wù)計(jì)劃設(shè)置運(yùn)行的時(shí)間。