因此,在仔细阅读了robocopy的文档后,我想出了一种方法来完成此任务。但是,它不是防弹的(请注意)。
这将完成什么
计算机A具有源目录,计算机B具有目标目录。两台计算机无法相互连接,但必须使用便携式存储设备来传输文件。此方法将允许在每次执行备份时将源目录备份到目标目录,而无需复制整个内容。备份将是源的精确副本(有关异常,请参见警告部分)。
为了演示,使用以下路径:
- C:\ SOURCE(在计算机A上)
- D:\ DESTINATION(在计算机B上)
- X:\ TEMP(在便携式存储设备上,例如USB硬盘)
步骤1:创建目录结构
我们需要计算机A能够确定备份内容的方法,因此我们使用robocopy在便携式存储设备上创建目录结构。这将创建相同的文件夹和文件,但大小将为0。
robocopy /e /create D:\DESTINATION X:\TEMP
(note: make sure X:\TEMP is empty or non-existent before doing this.
RC won't create 0-size files if they already exist)
步骤2:复制新档案
现在,将便携式存储设备连接到计算机A,并使用robocopy复制新文件。请注意,如果源中存在完整大小的文件,robocopy会将0大小的文件视为“已更改”文件,因此我们将它们排除在外,以避免复制未更改的冗余文件。
robocopy /mir /xc C:\SOURCE X:\TEMP
(note: the documentation on Microsoft technet says the switch is /xct,
but the copy of RC on my Windows 7 machine says it's /xc)
步骤3:更新备份
现在我们已经复制了新文件,我们可以将便携式存储设备连接回计算机B并使用robocopy完成工作。请注意,我们再次使用/ XC开关以避免用0大小的文件覆盖我们的备份文件。
robocopy /mir /xc X:\TEMP D:\DESTINATION
注意事项
此方法依赖于以下事实:robocopy创建大小为0的文件,否则该文件与原始文件相同。它们被标识为“已更改”,因为它们具有与原始文件相同的时间戳,但具有不同的文件大小。在正常情况下,修改文件后,其上次修改日期将被更新,并且robocopy会将其标识为“较新”。如果您的文件的内容已修改,但元数据未修改,则时间戳将保持不变,结果是上述方法将不会备份这些文件。
此外,使用的便携式存储介质也会影响文件。如果使用FAT32系统,则FAT32不支持NTFS安全信息和加密之类的内容。另外,大于4GB的文件将无法传输。因此,最好一直使用NTFS。