我有一些包含大量数据 (TB) 的文件夹需要备份,并且我有一组硬盘来存储备份。问题是,这里的计算机无权连接不安全的 USB 外围设备。我们确实有一个可以使用的安全 USB 便携式硬盘,但它的容量只有 750GB。几个月前我手动备份过,将几 TB 的数据分成 750GB 的块进行复制非常麻烦。
由于我已经在硬盘上拥有数据的旧副本,我想知道是否有办法只复制更改/新的数据,这样我就不必再次复制所有内容?
更新:
由于评论者不太清楚这一点,因此这里逐步介绍数据传输的过程:
- 将新数据从计算机 A 下载到 750GB 便携式硬盘
- 将 750GB 便携式硬盘和备份硬盘都连接到计算机 B
- 将数据从 750GB 便携式 HDD 传输到 HDD
(这些步骤适用于我们从头开始进行完整备份的情况,但我需要以某种方式修改它以避免复制未改变的冗余数据)
答案1
因此,在仔细阅读了 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 系统,则 NTFS 安全信息和加密等内容将无法传输,因为 FAT32 不支持它们。此外,大于 4GB 的文件将无法传输。因此最好始终使用 NTFS。