1. 程式人生 > >精簡mysql資料庫備份檔案 - windows定時任務

精簡mysql資料庫備份檔案 - windows定時任務

此前一篇文章,寫了一個通過windows定時任務,執行mysql資料庫備份的指令碼。

點此進入上一篇文章->通過windows伺服器定時任務,定時備份mysql資料庫。

50多個G的資料庫備份完成sql大概在20G,通過壓縮後大概在2G左右。

長時間進行後硬碟吃不消。所以做了一個定時清理備份檔案的指令碼。

嫌自己編寫麻煩的可以直接下載後修改,需要1積分。

製作完成的指令碼下載地址:

點此下載 ↓ 精簡mysql備份檔案指令碼

 

一、編寫指令碼檔案

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資料庫。