精簡mysql資料庫備份檔案 - windows定時任務
阿新 • • 發佈:2018-12-13
此前一篇文章,寫了一個通過windows定時任務,執行mysql資料庫備份的指令碼。
點此進入上一篇文章->通過windows伺服器定時任務,定時備份mysql資料庫。
50多個G的資料庫備份完成sql大概在20G,通過壓縮後大概在2G左右。
長時間進行後硬碟吃不消。所以做了一個定時清理備份檔案的指令碼。
嫌自己編寫麻煩的可以直接下載後修改,需要1積分。
製作完成的指令碼下載地址:
一、編寫指令碼檔案
1.關閉執行語句顯示
@echo off
@echo off -->關閉執行語句顯示
2.切換到備份檔案目錄
cd/d "D:\backup"
3.設定保留幾天的備份檔案
set/a n=10
宣告一個int變數 n ,賦值為保留檔案的天數(以10天為例)
4.處理要刪除的檔名
set/a y=%date:~,4%,m=1%date:~5,2%-100,d=1%date:~8,2%-100
宣告三個int變數 y,m,d ,並賦值y=年(yyyy),m=1月(mm)-100,d=1日(dd)-100
注:m賦值為何要1拼接上m後減去100呢?d賦值為何要1拼接上d後減去100呢?
因為如果是2月,%date:~5,2%返回02 防止賦值時出問題所以採用 1拼接mm 即102減去100後為實際的月轉換成int
set/a d-=n
將d減去n後 重新賦值給d,減去要保留的天數
if %d% gtr 0 goto :ok
:ov
set/a "md=31-!(m-5)-!(m-7)-!(m-10)-!(m-12)-!(m-3)*(3-!(y&3))"
set/a d+=md,m-=1
if %m% equ 0 set/a m=12,y-=1
if %d% leq 0 goto :ov
:ok
判斷d的值大於0,代表同月,可以直接使用d。如果小於0,則為跨月,需要重新計算
set/a md=m*100+d+10000
宣告一個int變數 md,並賦值 月份*100+天+10000. (以2018年2月3日為例:200+3+10000=10203)
set "ymd=%y%%md:~1%"
宣告一個變數 ymd,並賦值"20180203"(y=2018,md=10203)
echo %n% 天前日期為%ymd%
輸出文字“10天前日期為20180203”
5.刪除檔案
del test_%ymd%.rar
刪除 test_20180203.rar檔案
指令碼製作完成
二、新增定時任務
參考我的另一篇文章 點此進入->通過windows伺服器定時任務,定時備份mysql資料庫。