2011-12-01 59 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中盗取,反之亦然)。它只是用来记录脚本。 –

相关问题