2

I want to create a backup Batch file that meets these requirements:

Requirement:

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.

So, i tried this

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

Note: /v=Verify, /y=No prompting /e=subdirs /d=Copy only changed

However, after running the batch, it did not delete the files/folders mentioned in requirement 2. Also, i don't know how to do the requirement 4 & 5.

I searched many questions but seem they didn't have the code to meet requirement 2 & 4 & 5.

I don't want to use backup tool in Win7 since it is very heavy & it requires a big backup disk space. I prefer something simple (why didn't Window make things simple?? ).

Backup is very important when u do the project, I hope my question will help a lot of other programmers.

Can anyone know a good solution for this?

4

2 回答 2

3

如果你想要一个镜像备份,它只复制新的和更改的文件,删除源中不再存在的文件——那么 Robocopy 是内置的并且可以做到这一点。每天晚上 7 点安排的批处理文件将起作用。

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

于 2013-05-17T01:47:22.020 回答
1

我最近为一台旧的 XP 机器写了一个这样的批处理文件,因为我不相信 NTbackup 生成的格式在未来的机器上是可读的。例如,Windows 7 和 8 需要下载某种转换器:算了吧。我的批处理文件位于根 C:\ 目录中,并且我的“工具”程序列表中有一个快捷方式。

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

有趣的是,以这种方式生成的未压缩备份总量并不比 NTbackup 在 Windows XP 中以该程序的不可读格式生成的备份大。

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

REM备份.bat

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

REM 实际命令:

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

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

REM完成

出口

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

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

/y 表示不要询问是否覆盖现有文件。

/d 表示只复制以后的文件:非常适合备份,而且速度非常快。

这些文件与原始文件完全相同:没有奇怪的备份格式。

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

于 2015-02-18T23:49:11.587 回答