dd 到不同的文件系统

dd 到不同的文件系统

是否可以使用 dd 将数据从 NTFS 驱动器复制到 XFS 格式的驱动器?

我正在将我的 NAS 从 WHS(Windows Home Server)设置转换为基于 Linux 的 OpenMediaVault。因此,我准备将驱动器从 NTFS 转换为 XFS。

如果可能的话,我想直接从 NTFS 硬盘复制到 XFS 硬盘,然后将 NTFS 硬盘重新格式化为 XFS 以复制第二个硬盘。

我知道复制 if=/dev/sda 也会复制分区和文件系统。但如果我将 /dev/sda1 复制到不同格式的分区会怎样?

答案1

是否可以使用 dd 将数据从 NTFS 驱动器复制到 XFS 格式的驱动器?

不,dd读取/写入的是块,而不是文件。将备份映像从源 NTFS 驱动器写入目标 (XFS/EXT4/FAT32) 驱动器时,无论目标驱动器之前使用什么 FS 进行格式化,它都会变为 NTFS。

可以挂载dd图像并复制数据:

mount -o ro,loop -t ntfs myimage.img /mnt/

但更好的是,只保存tar您的数据=不压缩就存档,但保存用户、组和权限!

tar cvf /foo/bar/my_backup.tar /

但是如果我将 /dev/sad1 复制到不同格式的分区会怎样?

是的,您可以安装两个具有不同文件系统的驱动器并在它们之间复制文件。即:/dev/sda使用 NTFS 和/dev/sdbXFS。

答案2

但是如果我将 /dev/sad1 复制到不同格式的分区会怎么样?

(可能是打字错误,意思是 /dev/sda1)

如果使用 dd 进行复制,结果是新分区使用相同的格式,因为 dd 保留了文件系统的格式。因此,结果不会是“格式不同”。

是否可以使用 dd 将数据从 NTFS 驱动器复制到 XFS 格式的驱动器?

是的,您可以按照要求操作。
但是,从您的描述来看,您要求的操作(是否可以将 NTFS 中的数据存储到 XFS)是否完全符合您的要求尚不明确。

来自对 Michael D 的回答的评论:

dd if=a of=b相当于cp a b

我通常认为 的dd设计是为了与设备配合良好。如果“a”和“b”(在前面的例子中)是文件,那么您所说的是正确的。但是,dd 通常用于“a”或“b”是“设备”对象(或者,如果“a”和“b”都是设备)。在这种情况下,术语“设备”是指文件系统上的一种对象。最常见/传统上,与此类设备的交互将涉及与硬件通信,例如 /dev/sda 可能指硬盘驱动器。由于软件是高度可定制的,因此可能存在其他情况,例如 /dev/sda1 仅与硬盘驱动器上的一部分数据进行通信。

因此,这可以很好地发挥作用:

dd if=/dev/sda1 of=~/ntfscopy.img

这会将整个 NTFS 分区(包括文件系统内部结构等“元数据”)存储到名为 ~/ntfscopy 的文件中。然后您可以将其复制到 XFS 驱动器:

cp ~/ntfscopy.img /mnt/xfsdrive/ntfscopy.img

或者,你可以跳过这个单独的步骤:

dd if=/dev/sda1 of=/mnt/xfsdrive/ntfscopy.img

现在,这可能对备份数据有用。当您在分区上找到一些空白空间时,您可以将其写出。(当然,此示例涉及写入分区,因此您必须非常小心,以免最终覆盖数据。)

dd if=/mnt/xfsdrive/ntfscopy.img of=/dev/sdb2

这是一个有用的例子,将数据从 NTFS 驱动器复制到 XFS 驱动器,并且可以工作。

现在,如果您只想从 NTFS 驱动器复制文件,而不是整个 NTFS 分区(包括内部文件系统结构,这使得分区使用 NTFS 格式),该怎么办?在这种情况下,您不会想使用 dd。通过使用其他工具,您可以避免不必要地读取/复制所有 NTFS 内部文件系统结构。例如,您可以安装 NTFS 驱动器(如果您愿意,可以只读),然后使用“cp”从 NTFS 驱动器复制数据(或者如果您希望输出为一个方便的文件,也可以使用“tar”)。

相关内容