2011-12-01 108 views
0

上週我們有一個問題,如果我們有一個計劃任務正在運行,那麼這個問題將被排序。Windows服務器 - 目錄和數據庫備份

基本上我想知道的是,我需要創建一個批處理文件,它在Windows服務器上執行以下任務。

  • 備份的網站每天早上到特定的文件夾中的格式websitename_year_month_day

  • 備份的網站(基本上是一個文件夾和所有上午8:30(基本上是一個文件夾及其所有子目錄) 其子目錄),每天晚上到特定的文件夾中的格式websitename_year_month_day
    5:30

  • 備份在同一時間到同一文件夾位置的網站備份是在相應的數據塊。

因此,舉例來說,如果網站被稱爲swade1987

該文件夾必須在附件中顯示該文件結構。

http://imageshack.us/photo/my-images/254/screenclip1.png/

然而,理想情況下,我想它,所以它只能保存備份過去7天。

期待您的答覆如何最好地做到這一點。

如果你需要更多的澄清,讓我知道

史蒂芬

回答

0

這裏有您需要的部分:

  1. 得到7za.exe - 自由,獨立的Windows壓縮實用程序(谷歌7z命令行,你會發現它)。

  2. 使用微軟的sqlcmd.exe備份從一個批處理文件數據庫(命令行SQL執行包含在MSSQL)

這裏是如何命名您的文件: 因爲你只想保留最近7天,不要在名稱中放入日期,將星期日期的縮寫放在文件名中。例如website_mon.zip

這裏是一個樣例批處理文件。 使用您自己的風險。它沒有經過測試。我只是想到了我的頭頂。按照代碼和意見,並根據需要進行修改。如果沒有錯別字,我會感到震驚。還要觀察添加/修改的dos命令...如果它們包含長文件名,則可能需要添加一些周圍的引號。

@echo off 
set SHORTDATE=%DATE:~0,3% 

set DB_ZIP_FILE=c:\backups\sitedb_%SHORTDATE%.zip 
set WWW_ZIP_FILE=c:\backups\siterot_%SHORTDATE%.zip 
set WEBSITE_DIR=c:\mysite\wwwroot 

set SQL_FILE=c:\temp\backup.sql 

rem * get rid of our old backups 
rem * this is for our protection ... if there 
rem * was a problem with a zip (corruption) 
rem * our backups will fail if we don't get rid 
rem * of the old zips. 
rem * 
if exist %DB_ZIP_FILE% del %DB_ZIP_FILE% 
if exist %DB_ZIP_FILE% del %WWW_ZIP_FILE% 

rem * create a temp file containing the sql script 
echo BACKUP DATABASE YOUR_DB_NAME> %SQL_FILE% 
echo TO DISK='c:\temp\sitedb-%SHORTDATE%.bak'>>%SQL_FILE% 
echo WITH FORMAT, Name='Daily sitedb %SHORTDATE%' >> %SQL_FILE% 

echo %DATE% %TIME% backing up SITEDB 
call sqlcmd -U YOURUSER -P YOURPASSWORD -i %SQL_FILE% > NUL 

rem ** zip the files - we remove the old one before starting 
call 7za a -tzip %ZIP_FILE% c:\temp\sitedb-%SHORTDATE%.bak 

rem ** delete the bak file 
del c:\temp\sitedb-%SHORTDATE%.bak 

rem ** now zip up our web site directory 
7za a -tzip -r %WEBSITE_DIR% %WWW_ZIP_FILE% 
+0

嗨丹, 非常感謝您的回覆。 我會嘗試使用它並回復給您。 但是,「rem *」是什麼意思,因爲我以前從未使用過? – swade1987

+0

rem只是一條評論(從BASIC中盜取,反之亦然)。它只是用來記錄腳本。 –

相關問題