第一.最近客戶的服務器數據庫備份天天都在進行,隨着數據量的不斷的增長,備份也在不斷的進行變大。數據庫
第二.因而一些問題就出現了客戶的服務器的磁盤的空間有限,按期數據庫備份文件太大而致使沒法進行保存問題。服務器
第三.從而致使了服務器宕機以及服務器中一些應用程序以及網站沒法使用等等。ide
第四.因此須要進行解決這個問題就須要開發一個應用程序進行按期的刪除數據庫的備份以及其餘的文件。網站
第五.在進行刪除數據庫的備份的時候須要注意是的刪除設置的幾天前的數據庫備份,其餘最新的數據庫的備份的文件不要刪除。url
第六:能夠應用Windows服務進行開發定時刪除數據庫備份的應用的程序,也能夠進行應用控制檯開發定時刪除數據庫的備份的程序固然若是應用控制檯應用程序進行開發,那麼最好進行結合Windows 系統自帶的計劃任務程序比較方便。固然你是能夠進行選擇的,因人而異。spa
第五.那麼若是作到刪除指定的數據庫備份文件例如DB2,DBName.0.DB2.DBPART000.20161010153053.001等等以及SQLServer DbName.bak等等日誌
以及MySql數據庫的備份文件等等,以及其餘的文件格式都是支持的。orm
第七.那麼解決這個問題我須要作的是:blog
1.首先須要找到數據庫備份文件的路徑將其讀取出來,固然這裏所知的路徑是指物理路徑。開發
2.須要作的是將數據庫的文件的名稱以及數據庫備份的時間進行讀取出來,爲了方便取出最新的以及幾天前的數據庫備份。
3.固然你還須要進行應用File文件類中的一些具體的刪除的方法。來進行刪除。
第八:下面我將本身寫的按期刪除數據庫備份控制檯應用程序貼出來供你們參考。
按期的進行刪除數據庫備份文件代碼以下
class Program
{
static void Main(string[] args)
{
string strDirfile = Properties.Settings.Default.DB_FILE_PATH;
Console.WriteLine("strDirfile{0}", strDirfile);
int keepFileCnt = int.Parse(Properties.Settings.Default.KEEP_FILE_CNT);
try
{
if (string.IsNullOrEmpty(strDirfile) || !Directory.Exists(strDirfile))
{
Console.WriteLine("配置的文件的路徑不正確請檢查{0}" + strDirfile);
}
if (keepFileCnt <= 0)
{
Console.WriteLine("沒有配置刪除的天數");
}
if (strDirfile != null)
{
if (Directory.Exists(strDirfile))
{
string[] strDirs = Directory.GetDirectories(strDirfile);
string[] strFiles = Directory.GetFiles(strDirfile);
DBNameAndTime file = new DBNameAndTime();
if (strFiles != null)
{
foreach (string strFile in strFiles)
{
if (strFile != null)
{
FileInfo fi = new FileInfo(strFile);
string[] strArr = fi.Name.Split('.');
file.DataName = fi.Name;
file.FileTime = strArr[5];
file.Url = strFile;
DateTime dt1 = DateTime.Now;
if (strArr.Length > 0)
{
IFormatProvider provider = new CultureInfo("zh-CN");
string tarStr = "yyyyMMddHHmmss";
DateTime dt2 = DateTime.ParseExact(file.FileTime.ToString(), tarStr, provider);
TimeSpan ts = dt1 - dt2;
Console.WriteLine("時間天數:{0}", ts);
if (ts.TotalDays >= keepFileCnt)
{
if (strFile != null)
{
File.Delete(strFile);
using (StreamWriter sw = new StreamWriter(strDirfile + "數據庫備份的刪除日誌.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "數據庫備份刪除開始:" + "刪除的路徑:" + strDirfile + "刪除數據庫備份的名稱" + strFile);
}
Console.WriteLine("{0}數據庫備份文件刪除成功!", DateTime.Now);
}
else
{
Console.WriteLine("刪除文件失敗!");
}
}
else
{
Console.WriteLine("其餘的備份文件都是最新的沒有3天前的備份!");
}
}
}
}
}
//保存刪除的根目錄的文件夾
foreach (string strdir in strDirs)
{
Directory.Delete(strdir, true);
}
}
else
{
Console.WriteLine("此目錄中只有根目錄了!");
}
}
else
{
Console.WriteLine("此目錄不存在!");
}
}
catch (Exception ex)
{
//將數據庫備份的異常寫入到記事本中
using (StreamWriter sw = new StreamWriter(strDirfile + "數據庫備份的刪除日誌.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "備份文件都是最新的沒有3天前的備份" + ex.Message);
}
}
}
}
//進行聲明備份數據庫的類
public class DBNameAndTime
{
private string fileName;
/// <summary>
/// 文件名稱
/// </summary>
public string FileName { get { return fileName; } set { fileName = value; } }
private string fileTime;
/// <summary>
/// 文件的最後修改時間
/// </summary>
public string FileTime { get { return fileTime; } set { fileTime = value; } }
private string dataName;
/// <summary>
/// 數據庫名稱
/// </summary>
public string DataName { get { return dataName; } set { dataName = value; } }
private string url;
/// <summary>
/// 文件路徑
/// </summary>
public string Url { get { return url; } set { url = value; } }
public string DownUrl { get { return fileName; } }
}
以上內容均屬於原創,轉載請標明。謝謝!