如何创建仅复制已修改文件的备份批处理文件&删除源中不存在的dest文件/文件夹?

时间:2013-05-16 23:05:57

标签: batch-file window backup batch-processing

我想创建一个满足这些要求的备份批处理文件:

要求:

1-Only copy the source files if the source file got modified.

2-If the destination contains the files/folders that do not exist in the source, then the destination files/folders will be deleted.

3-Copies all subdirectories, even if they are empty.

4-If something happened that make the coping process uncompleted (ie copied unsuccessfully), the program will revert & keep the old version of the destination folder.

5-The batch file should run at the time i turn off my PC or at 7pm Daily.

所以,我试过这个

xcopy C:\MyProject N:\backup\MyProject /V /Y /E /D

注意:/ v =验证,/ y =无提示/ e =子目录/ d =仅复制更改

然而,在运行批处理后,它没有删除要求2中提到的文件/文件夹。另外,我不知道如何执行要求4& 5。

我搜索了很多问题,但似乎他们没有符合要求2&的代码。 4& 5。

我不想在Win7中使用备份工具,因为它很重,而且非常重要。它需要一个大的备份磁盘空间。我更喜欢简单的东西(为什么窗户不简单?)。

当您执行该项目时,备份非常重要,我希望我的问题能够帮助很多其他程序员。

任何人都可以知道一个很好的解决方案吗?

2 个答案:

答案 0 :(得分:3)

如果您想要一个仅复制新文件和已更改文件的镜像备份,则删除源中不再存在的文件 - 然后内置Robocopy并且可以执行此操作。每天晚上7点安排的批处理文件将有效。

您的要求#4是我在任何备份程序中都没有看到的,包括Robocopy。

答案 1 :(得分:1)

我最近为旧的XP机器编写了这样的批处理文件,因为我不相信NTbackup生成的格式在未来的机器上可读。例如。 Windows 7和8需要下载某种转换器:忘了。我的批处理文件位于根C:\目录中,我的"工具"中有一个快捷方式。节目清单。

在记事本中写入文件,并保存为例如C:\ BACKUP.BAT。从" Run"运行它命令。第一次运行时,您指定的所有目录都将被精确复制到备份驱动器,包括所有子目录(我使用的是4 Gbyte拇指驱动器:您可能需要更大)。第一次,我的小型3 GB左右的东西在旧的XP机器上花了大约4分钟。

有趣的是,以这种方式产生的未压缩备份总量不会超过Windows XP中NTbackup以该程序不可读格式生成的备份。

这是一个批处理文件,带有注释(REM)......

REM backup.bat

下面的xcopy行是目录c:\ anydir及其子目录中的东西,被复制到e:驱动器上的目录\ anydir(例如USB驱动器)。

REM实际命令:

xcopy c:\ anydir e:\ anydir / i / s / y / d

对于其他目录,只需在xcopy命令中更改c:\目录和e:\目录名称。但是,请注意像My Pictures这样的名称,并带有空格:您必须重命名它们(只需删除空格),以便DOS识别它们。

REM完成

出口

/ i表示创建备份驱动器上不存在的任何(子)目录。因此,这会从您开始的c:目录中复制整个分支。

/ s复制源目录和子目录,除非它们是空的。

/ y表示不要过多地写一些现有文件。

/ d表示只复制较晚的文件:非常适合备份,而且非常快。

文件与原始文件完全一样:没有奇怪的备份格式。

关于提问者的问题#4,我认为只是再次运行备份会覆盖任何失败。但如果失败,请擦除备份驱动器并重新开始。问题#5 ... XP(我认为7)允许来自Startup菜单的计划任务:只需在列表中插入c:\ backup.bat即可。但我还没试过。