我们上周在工作中遇到了一个问题,如果我们有一个计划任务正在运行,它将被排序。
基本上我想要知道的是,我需要创建一个批处理文件,在Windows服务器上执行以下任务。
备份网站(基本上是一个文件夹及其所有子目录) 每天早上8:30到特定文件夹,格式为websitename_year_month_day
备份网站(基本上是一个文件夹及其所有子目录)
每晚5:30到特定文件夹,格式为websitename_year_month_day
将相应的数据库同时备份到网站备份所在的同一文件夹位置。
因此,例如,如果该网站名为swade1987
该文件夹将在附件中显示此文件结构。
http://imageshack.us/photo/my-images/254/screenclip1.png/
但是,理想情况下,我希望它只保存过去7天的备份。
期待您的答复,了解如何做到最好。
如果您需要更多说明,请告诉我
史蒂芬
答案 0 :(得分:0)
以下是您需要的部分:
获取7za.exe - 一个免费的独立Windows压缩实用程序(google for 7z命令行,您将找到它)。
使用microsoft的sqlcmd.exe从批处理文件(mssql附带的命令行sql执行程序)备份数据库
以下是如何为文件命名: 因为你只想保留最近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%