有没有办法使用“dd”命令来传输外部硬盘中的特定文件夹?

有没有办法使用“dd”命令来传输外部硬盘中的特定文件夹?

我目前正在尝试使用dd来备份和复制外部硬盘中的 Backups.db 文件夹(其中包含所有适用于 Mac OS 的 Time Machine 备份)。问题是我的硬盘不仅包含 Backups.db 文件夹,而且还包含顶层的其他文件夹和文件。如果我dd在设备上使用,它也会复制其他文件夹和文件。我需要使用类似的方法,dd因为 Backups.db 文件夹中存在硬链接,这使得类似cptar无法正常工作。

此时,我是否应该复制其他顶层文件夹,以便外部驱动器仅包含 Backups.db 文件夹?或者有更有效的方法吗?我问这个问题是因为我知道dd只能在卸载后在设备上使用。

答案1

要回答这个问题,这是不可行的。

dd直接对设备的块进行操作,不了解文件系统、文件夹或文件。单个目录几乎永远不会存储在单个连续区域中,甚至单个文件也可能被分散开来。此外,您不能只复制文件系统的某些部分以节省空间并期望它仍然有效,因为所有索引和偏移量仍然需要对齐。

完成这项工作所需的工作基本上是编写整个文件系统驱动程序,以了解所有内容的位置以及如何更改它们,并通过多次调用来执行它。如果这项工作已经存在,并且可以使用 GNU 、和dd等常规文件实用程序来完成,那么这样做就毫无意义了。cptarrsync

答案2

我总是说,不要尝试通过命令行来做那些可以使用 GUI 轻松完成的事情。

复制自如何将 Mac Time Machine 从一个驱动器复制到另一个驱动器
Finder 知道如何做到这一点,几乎没有其他工具知道如何做到这一点。

硬链接和/或权限通常是失败的原因。
不要尝试在复制过程中手动修剪它,只需复制全部内容即可。如果您需要按大小或日期修剪,请单独进行。

Apple 复制指南 -将 Time Machine 备份从一个备份磁盘传输到另一个备份磁盘

简而言之:
格式化 HFS+
设置正确的权限system rw wheel rw everyone r
关闭 Time Machine
将整个 Backups.backupdb 文件夹拖到新驱动器。

询问有关尺寸修剪的不同指南 -从 TimeMachine 中删除不必要的备份以获取空间

相关内容