复制时文件变大

复制时文件变大

我太愚蠢了,忘记删除旧备份,所以可以创建一个新备份。删除它几天后,我的 Windows 崩溃了。

现在我正尝试通过 Debian 创建备份。我将 1TB 驱动器复制到 1.5TB 驱动器,其中包含 Windows 目录树(不是图像)。但我的 1TB 不适合 1.5TB。1.5TB 磁盘上没有其他文件。两个驱动器都是 NTFS。

发生了什么事?我该如何解决?

答案1

好的,我删除了整个驱动器并转到属性。在这里我发现它被列为空,但使用了 1TB。我将其格式化为 NTFS,现在一切都合适了!

答案2

复制的目录树最终在目标中占用的空间可能比在源中占用的空间大,原因可能有多种。大多数文件系统(包括 NTFS)都支持以下可能导致这种情况的功能。

编辑:我刚刚看到您尝试使用cp而不是 Windows 资源管理器进行复制。我不确定这些项目如何cp以及ntfs-3g如何处理。但是,请继续阅读,因为答案还有第二部分。

  • 符号链接/硬链接:文件系统可以创建文件的轻量级“副本”,它不是原始文件的完整副本,而只是指向原始文件(这意味着对一个“副本”所做的更改将应用​​于另一个)。我相信 Windows 本身也使用此功能,例如在 WinSXS 文件夹中。当您尝试使用 Windows 资源管理器复制符号链接/硬链接时,它不会简单地复制轻量级符号链接/硬链接。相反,它会为您提供原始文件的完整副本。例如,假设您有一个文件和指向该文件的符号链接,并且您将它们都复制到新位置。那么您将获得原始文件的两个副本,而不是一个,占用的空间是最初使用的两倍。
  • 稀疏文件:NTFS 允许人们节省包含大量全 0 块的文件的空间。可以告诉文件系统只保存非零块,而不是保存整个文件。使用 Windows 资源管理器复制稀疏文件时,生成的副本将不再稀疏,因此文件中全 0 的块实际上会占用空间,从而增加副本的大小。
  • 压缩:NTFS 允许人们要求它压缩文件以节省空间。使用 Windows 资源管理器复制文件时,除非要复制到的目录是压缩目录,否则生成的副本不会被压缩。请参阅此 Microsoft 帮助页面了解详细信息

除非您亲自广泛使用这些功能,否则这些功能不太可能导致您的副本占用如此多的空间。您可以通过运行磁盘空间使用实用程序来找出额外空间的来源,例如目录统计在源和(不完整的)副本上查看哪些文件夹在副本中占用了更多空间。

但是,如果您确实想要一个可以恢复的完全可用的 Windows 映像,我不建议使用这样的实用程序,cp因为我不确定它是否能正确复制元数据(例如 Windows ACL)。相反,我建议按照 AFH 的建议进行基于映像的复制。如果您想克隆磁盘而不是创建它的映像,您应该能够遵循基本相同的说明,只需进行一些将在最后提到的细微修改。

  1. 启动 Linux。(我相信您说过您正在使用 Debian。)
  2. 确定要备份的硬盘路径。它应该以 开头/dev/。我建议备份整个硬盘,而不是仅备份一个分区。我们将在下文中引用它。
  3. 挂载需要备份的硬盘,并找到其挂载点的路径。我们将在下文中提到这一点。
  4. 跑步dd if=<path to source> of=<path to destination mount point>/mybackup.bak
  5. 等待 3 小时到 1.5 天才能完成。(速度可能在 10mb/s 到 100mb/s 之间。)如果您的源或目标是 USB 3.0 外部驱动器,您可能会惊讶地发现复制速度比 Windows 下慢得多。原因是即使 Linux 应该支持联合服务计划,支持并不总是在应该启用时启用。(至少,这是我的经验。)
  6. 如果需要恢复备份,请运行dd if=<path to destination mount point>/mybackup.bak of=<path to source>

如果您想要克隆磁盘而不是创建映像,则应该能够将其替换为要复制到的硬盘路径。(它应该以/dev/. 开头)

编辑:正如 gronostaj 指出的那样,使用bs=<size>参数 withdd可能会加快速度。但是,最佳值取决于您的系统。请参阅此答案详细信息

相关内容