level 1
求各大侠帮忙
现服务器要求写批处理实现文件差分备份
源文件夹目录:D:\work\server\os\
备份文件夹目录:E:\work\server\os\
第一次备份COPY全部文件后,以后每天做差分备份
源文件夹目录内的文件每天有一部分会进行修改及更新,如果还是全部备份的话,很是耗费时间,故想进行只对修改和更新的文件进行备份,
恳请各大侠帮忙写个批处理文件。
非常感谢。
2010年07月31日 07点07分
1
level 0
xcopy d:\work\server\os e:\work\server\os /d /e
Robert Wang
2010年08月04日 09点08分
2
level 1
先设想一个思路,第一次备份文件后,以后源文件夹目录有部分文件会修改或更新,文件在修改或更新后,文件属性的访问日期和修改日期都会改成变成当日的日期,这个可通过随意修改一个文件然后查看属性来测试.但文件被访问,但文件内容不一定更新或修改,所以按修改日期进行判定.用系统日期与文件的修改日期进行比较,若日期相同,说明该文件被更新或修改过,那么就复制该文件到指定位置.缺点就是,当日修改或更新的文件,须当日进行备份,且系统日期一定要准确.
测试环境如下
源文件夹目录: d:\work\server\os (未考虑是否有子文件夹)
备份文件目录: e:\work\server\os (同样未考虑是否有子文件夹)
@echo off&cls
set "dt=%date:~0,10%"
set "sure=d:\work\server\os"
set "des=e:\work\server\os"
setlocal enabledelayedexpansion
for /f "tokens=1-4 delims= " %%i in ('dir %sure%\*.* /tw /o-d /a-d') do (
set "var=%%i"
if "!var!"=="%dt%" ( copy "%sure%\%%l" "%des%" /y)
)
endlocal
echo.&echo 系统日期为%sure%的文件备份完成,按任意键退出...
pause >nul
2010年08月05日 03点08分
3