Board logo

标题: 怎样实现从一个目录到另一目录的一一对应压缩 [打印本页]

作者: qwertl     时间: 2008-8-17 19:34    标题: 怎样实现从一个目录到另一目录的一一对应压缩

怎样实现从一个目录到另一目录的一一对应压缩
bak目录每天会自动生成几个包含日期的数据库bak备份文件,怎样实现在生成备份后只将今天生成的每个bak文件,压缩到另一目录,文件名不变,后缀为压缩格式rar了,主要是压缩时的文件选择问题不会处理。谢谢
作者: HAT     时间: 2008-8-17 20:09
以今天为例,把bak文件的完整名称贴出来看看?
作者: qwertl     时间: 2008-8-18 10:02
C:\Documents and Settings\Administrator>date /t
2008-08-18 星期一
2008-08-15  17:55         1,720,832 work_db_200808151755.BAK
2008-08-15  17:55        35,275,264 cl_db_200808151755.BAK
2008-08-15  17:55         2,441,728 client_db_200808151755.BAK
2008-08-15  17:56       323,240,448 ll_db_200808151755.BAK
2008-08-15  17:58       405,946,880 wyw_db_200808151756.BAK
2008-08-15  18:14     3,771,351,552 llg_db_200808151758.BAK
2008-08-15  18:26     2,595,250,688 ps_gm_db_200808151814.BAK


另一服务器:
2008-08-14  19:00            5,234,176 WanveSysLog_db_200808141900.BAK
2008-08-15  19:00            1,588,736 Dgdaj_xxwj_db_200808151900.BAK
2008-08-15  19:00            2,870,784 OA_SetNet_db_200808151900.BAK
2008-08-15  19:00            1,593,856 OA_SPNet_db_200808151900.BAK
2008-08-15  19:00           51,961,344 OA_TdcNet_db_200808151900.BAK
2008-08-15  19:00            2,388,480 WanDaBusin_db_200808151900.BAK
2008-08-15  19:00           13,880,832 Wandadotnet_db_200808151900.BAK
2008-08-15  19:00            5,234,176 WanveSysLog_db_200808151900.BAK
作者: yishanju     时间: 2008-8-18 10:45
RAR安装目录下有RAR命令可以用在批处理缩文件
作者: yishanju     时间: 2008-8-18 10:48
另一服务器:
2008-08-14  19:00            5,234,176 WanveSysLog_db_200808141900.BAK
2008-08-15  19:00            1,588,736 Dgdaj_xxwj_db_200808151900.BAK
2008-08-15  19:00            2,870,784 OA_SetNet_db_200808151900.BAK
2008-08-15  19:00            1,593,856 OA_SPNet_db_200808151900.BAK
2008-08-15  19:00           51,961,344 OA_TdcNet_db_200808151900.BAK
2008-08-15  19:00            2,388,480 WanDaBusin_db_200808151900.BAK
2008-08-15  19:00           13,880,832 Wandadotnet_db_200808151900.BAK
2008-08-15  19:00            5,234,176 WanveSysLog_db_200808151900.BAK


这么多数据库同一时间备份,不会出问题么?
我对数据库不懂
作者: qwertl     时间: 2008-8-18 10:54
只会将所有文件压缩成一个包,现在要生成一一对应的压缩包. 而且是只当天的
作者: HAT     时间: 2008-8-18 11:27

@echo off
set Today=%date:~0,4%%date:~5,2%%date:~8,2%
echo %Today%
for /f "tokens=*" %%a in ('dir /s /b "C:\test\*%Today%*.bak"') do (
  echo %%a
  rem 压缩的那一部分自己写吧,搞不定,就再提问。
)

作者: yishanju     时间: 2008-8-18 12:20
-_-!!

RAR有按文件创建时间压缩文件的吧
作者: yishanju     时间: 2008-8-18 12:22
RAR 3.71    版权 (c) 1993-2007 为 Alexander Roshal 所有    20 Sep 2007
共享软件版本       键入 RAR -? 或 RAR /? 或 RAR | MORE 可获得帮助

用法:      rar <命令> -<开关 1> -<开关 N> <档案文件> <文件...>
               <@列表文件...> <释放路径\>

<命令>
  a             添加文件到档案文件中
  c             添加档案文件注释
  cf            添加文件注释
  ch            改变档案文件参数
  cw            将档案文件注释写到文件中
  d             从档案文件中删除文件
  e             释放文件到当前目录
  f             刷新档案文件内的文件
  i[参数]=<字符串>  在档案文件内查找字符串
  k             锁定档案文件
  l[t,b]        列表档案文件 [技术支持信息, 梗概信息]
  m[f]          移动到档案文件 [仅文件]
  p             打印文件到标准输出设备
  r             修复档案文件
  rc            重建丢失的卷
  rn            重命名已归档的文件
  rr[N]         添加数据恢复记录
  rv[N]         创建恢复卷
  s[模块名|-]     转换档案文件为自释放格式
  t             测试档案文件
  u             更新档案文件内的文件
  v[t,b]        列表档案文件详细资料 [技术支持信息, 梗概信息]
  x             以完整路径释放文件

<开关>
  -             停止开关扫描
  ac            压缩或释放后清除「存档」属性
  ad            追加档案文件名到目标路径
  ag[格式]      使用当前日期做为档案文件名
  ao            添加带有「存档」属性的文件
  ap<路径>      设置档案文件内部路径
  as            同步档案文件内容
  av            设置用户身份校验 (仅用于注册版)
  av-           禁止用户身份校验检查
  c-            禁止注释显示
  cfg-          禁止读取配置
  cl            转换名字为小写字母
  cu            转换名字为大写字母
  df            归档后删除来源文件
  dh            打开共享文件
  ds            禁止固定档案文件的名称排序
  e[+]<属性>    设定文件排除和包含属性
  ed            不添加空目录
  en            不要放置 '档案文件末尾' 块
  ep            排除路径
  ep1           排除基准目录
  ep2           扩充为完整路径
  ep3           展开包含驱动器字母的完整路径
  f             刷新文件
  hp[密码]      加密文件数据和标头
  id[c,d,p,q]   禁止讯息
  ieml[地址]    通过电子邮件发送档案文件
  ierr          发送所有讯息至标准错误输出设备
  ilog[文件名]  记录错误讯息到文件 (只在注册版中可用)
  inul          禁止所有讯息
  ioff          完成操作后关闭计算机
  isnd          允许声音提示
  k             锁定档案文件
  kb            保留损坏的文件
  m<0..5>       设置压缩等级 (0-存储...3-默认...5-最大)
  mc<参数>      设置高级压缩参数
  md<大小>      以 KB 为单位的字典大小 (64,128,256,512,1024,2048,4096 或 A-G)
  ms[扩展名;扩展名]   指定要保存的文件类型
  mt<线程数>   设定线程数目
  n<文件>       只包含指定的文件
  n@            从标准输入设备读取要包含的文件名
  n@<列表>      包含指定列表文件中的文件
  o+            覆盖已存在的文件
  o-            不覆盖已存在的文件
  oc            置值 NTFS 压缩属性
  or            自动重命名文件
  os            保存 NTFS 数据流
  ow            保存或还原所有者和组
  p[口令]       设置口令
  p-            不询问口令
  r             包含所有子目录
  r0            只包含与通配符匹配的所有子目录
  ri<P>[:<S>]   设置优先级 (0-默认,1-低..15-高) 及以毫秒为单位的睡眠停顿时间
  rr[N]         添加数据恢复记录
  rv[N]         创建恢复卷
  s[<N>,v[-],e] 创建固定格式档案文件
  s-            禁止创建固定格式档案文件
  sc<字符集>[目标]  指定字符集
  sfx[模块名]     创建自释放档案文件
  si[名字]      从标准输入设备 (stdin) 读取数据
  sl<大小>      处理小于指定大小的文件
  sm<大小>      处理大于指定大小的文件
  t             归档后测试文件
  ta<日期>      处理在 YYYYMMDDHHMMSS 格式中 <指定日期> 后修改的文件
  tb<日期>      处理在 YYYYMMDDHHMMSS 格式中 <指定日期> 前修改的文件
  tk            保持原有的档案文件时间
  tl            将档案文件时间设为最新文件的时间
  tn<时间>      处理比 <指定时间> 更新的文件
  to<时间>      处理比 <指定时间> 旧的文件
  ts<m,c,a>[N]  保存或恢复文件时间属性 (修改、创建及访问时间)
  u             更新文件
  v             创建分卷压缩时自动检测大小或列出所有的分卷
  v<大小>[k,b]  创建分卷, 分卷大小 = <大小> * 1000 [*1024, *1]
  vd            创建分卷前先清除磁盘内容
  ver[n]        文件版本控制
  vn            使用旧样式的卷命名方案
  vp            在每个分卷压缩前暂停
  w<路径>       指定工作目录
  x<文件>       排除指定的文件
  x@            从标准输入设备读取要排除的文件名
  x@<列表>      排除指定列表文件中的文件
  y             所有的询问都回答是
  z[文件]       从档案文件读取注释内容
作者: qwertl     时间: 2008-8-18 13:29
是不是直接可以将echo 换成rar a  e:\rardata\%%a.rar   %%a
作者: yishanju     时间: 2008-8-18 13:32
。。。
去试试就知道了
作者: qwertl     时间: 2008-8-19 11:14
http://upload.cn-dos.net/img/679.jpg


[ Last edited by qwertl on 2008-8-19 at 11:21 AM ]
作者: HAT     时间: 2008-8-19 11:35
看来论坛的上传系统还是不稳定
作者: qwertl     时间: 2008-8-19 12:52
上传的图片没有了??
作者: HAT     时间: 2008-8-19 13:37
7楼的代码无法满足要求?
作者: qwertl     时间: 2008-8-19 14:42
下午测试再看.,不过觉得有这个rar参数应会简单些
作者: qwertl     时间: 2008-8-21 22:50
@echo off
set rar_="c:\program files\winrar\rar.exe"
set Today=%date:~0,4%%date:~5,2%%date:~8,2%
echo %Today%
for /f "tokens=*" %%a in ('dir /b / "F:\backup\sql\*%Today%*.bak"') do (
  %rar_%  a   "F:\backup\sql\%%~na.rar"  "F:\backup\sql\%%a"
  )

执行提示出错:

C:\>autorar
20080826

RAR 3.71    版权 (C) 1993-2007 Alexander Roshal    20 九月 2007
共享版本         输入 RAR -? 获得帮助

评估版本,请注册

不能打开 wzyw_db_200808261831.BAK
系统找不到指定的文件。
正在创建  压缩文件 F:\rardata\sql\wzyw_db_200808261831.rar

警告:无文件

[ Last edited by qwertl on 2008-8-26 at 05:16 PM ]
作者: qwertl     时间: 2008-8-26 17:17
@echo off
set rar_="c:\program files\winrar\rar.exe"
set Today=%date:~0,4%%date:~5,2%%date:~8,2%
echo %Today%
for /f "tokens=*" %%a in ('dir /b / "F:\backup\sql\*%Today%*.bak"') do (
  %rar_%  a   "F:\backup\sql\%%~na.rar"  "F:\backup\sql\%%a"
  )

执行提示出错:

C:\>autorar
20080826

RAR 3.71    版权 (C) 1993-2007 Alexander Roshal    20 九月 2007
共享版本         输入 RAR -? 获得帮助

评估版本,请注册

不能打开 wzyw_db_200808261831.BAK
系统找不到指定的文件。
正在创建  压缩文件 F:\rardata\sql\wzyw_db_200808261831.rar

警告:无文件
作者: HAT     时间: 2008-8-26 17:25
'dir /b / "F:\backup\sql\*%Today%*.bak"'
那个蓝色的斜线有什么作用?
作者: qwertl     时间: 2008-8-26 17:45
麻虎了   晕
作者: metoo     时间: 2008-8-26 19:24


  Quote:

  1. @echo off
  2. if not exist "%systemroot%\system32\rar.exe" copy rar.exe "%systemroot%\system32\"
  3. for /f "skip=5 tokens=4" %%a in ('dir e:^|find /v "字节"') do (
  4.         rar a "f:\backup\%%a.rar" "e:\%%a"
  5. )
  6. echo 备份完成
  7. ping -n 2 127.1 >nul 2>nul
        metoo发表于:  2008-08-26  19:11

老早写的自己用的。实际上rar支持通配符,简单多了,我是因为这个使用正常懒得去改,自己改改吧

[ Last edited by metoo on 2008-8-26 at 07:28 PM ]