是否可以使用 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/sdb
XFS。
答案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”)。