Board logo

标题: 关于数据库压缩的问题,这个有挑战性,请高手进。 [打印本页]

作者: zmrmyll     时间: 2009-6-16 00:48    标题: 关于数据库压缩的问题,这个有挑战性,请高手进。

用SQL 自动备份数据库 生成在D:\BAK\ 目录里,生成的文件名是 MyDb_20090615完全备份.BAK 。

现在想压缩数据库,并且删除原文件。

问题就是 自动备份的数据库名字每天都变 今天是MyDb_20090615完全备份.BAK 明天就是MyDb_20090616完全备份.BAK

怎么让RAR自动识别,然后压缩该数据库。
作者: Hanyeguxing     时间: 2009-6-17 02:17
cmd /c "C:\Program Files\WinRAR\WinRAR.exe" m -ag -cfg- -ibck -inul -m5 -s -y "D:\BAK\MyDb_" "D:\BAK\MyDb_%date:~0,4%%date:~5,2%%date:~8,2%完全备份.BAK"

如果觉得上面的命令过长,可以使用批处理:

@echo off
set han=D:\BAK\MyDb_%date:~0,4%%date:~5,2%%date:~8,2%
"C:\Program Files\WinRAR\WinRAR.exe" m -afrar -cfg- -ibck -inul -m5 -or -s -y %han% %han%完全备份.BAK
pause&exit


说明:
%date%变量示例为2009-06-17 星期三


winrar的命令开关说明:
命令 M - 移动文件和文件夹到压缩文件(即压缩后删除源目标文件)
开关 -AG[格式] - 以当前日期与时间生成压缩文件名
开关 -AF<类型> - 指定压缩文件格式
开关 -CFG- - 忽略默认配置和环境变量
开关 -DR - 压缩后清除文件。删除文件前使用0字节覆盖文件数据,防止文件被恢复。
开关 -IBCK - 在后台运行 WinRAR
开关 -INUL - 禁用错误信息
开关 -IOFF - 关闭 PC 电源
开关 -M<n> - 设置压缩方式
开关 -OR - 如果相同名字的文件已经存在则自动重命名解压的文件。
开关 -S - 创建固实压缩文件
开关 -Y - 假设全部的询问回应皆为“是”
开关 -TA<日期> - 只处理指定日期之后修改的文件
开关 -TB<日期> - 处理制定日期之前修改的文件
开关 -TN<时间> - 处理比指定时间新的文件
开关 -TO<时间> - 处理比指定时间旧的文件


楼主注意发贴格式和主题,免得俺回完了总被删。。。

[ Last edited by Hanyeguxing on 2009-6-17 at 02:39 ]
作者: zmrmyll     时间: 2009-6-17 23:10
谢了,试验成功了!不过还有一个问题,我想把备份的最新文件传到另一个机子上去做异地备份,如何做呢?自动的。。 这个目录下有若干备份的数据库,如何才能识别哪个是最新的?

[ Last edited by zmrmyll on 2009-6-17 at 23:25 ]
作者: Hanyeguxing     时间: 2009-6-18 00:19
以上面批处理为例子,做出的备份压缩名称就是D:\BAK\MyDb_20090617.rar,这个就应该是最新的。如果一天进行了多次备份压缩,则可以使用:
@echo off
set han=D:\BAK\MyDb_%date:~0,4%%date:~5,2%%date:~8,2%
"C:\Program Files\WinRAR\WinRAR.exe" m -afrar -cfg- -ibck -inul -m5 -or -s -y %han% %han%完全备份.BAK
for /f "delims=" %%i in ('dir "D:\BAK\MyDb_*.rar" /b /s /od /a-d') do set ye=%%i
set gu0=hanyeguxing\
set gu1=UC30194447
set gu2=UC34886634
set xing=Computer
net use \\%xing%\ipc$ "%gu2%" /user:"%gu1%" >nul 2>nul
copy "%ye%" "\\%xing%\F$\%gu0%" /v /y /z
net use \\%xing%\ipc$ /del >nul 2>nul
pause&exit

::说明:该批处理仅用于局域网文件传输
::变量gu0为要传输的路径,这里设置为远程计算机的的F:\hanyeguxing\
::变量gu1为IPC$连接的用户名
::变量gu2为IPC$连接的用户的密码
::变量xing为指定远程计算机的名称或 IP 地址。
[ Last edited by Hanyeguxing on 2009-6-18 at 13:18 ]