重大危险丑陋警告(磁盘名称确实会改变)

重大危险丑陋警告(磁盘名称确实会改变)

大家好:我正在使用 Ubuntu 22.04。我知道有很多关于 dd 的帖子,但我仍然感到困惑。我有一个 1 TB 的便携式驱动器 (WD Passport),其中的目录和文件总计约 500 GB。然后我有另一个空白便携式驱动器 (WD Passport),我想将 500 GB 复制到其中,以便将其作为备份。此命令未给出正确的结果。

dd if=/dev/sdb1 of=/dev/sdc1 status=progress

根据我在 askubuntu.com 上阅读的帖子,似乎我可能必须先安装一些东西?感谢您的智慧、帮助甚至链接。我找到的所有链接都没有解释在开始之前如何安装任何东西。非常感谢。

PS:rsync 和 cp 不是选项,因为我尝试过它们并且似乎需要数周时间才能完成。

答案1

dd确实比cp和甚至更快rsync......原因是dd不处理目录和文件,而cprsyncdd读取和写入(尽管它可以在其他用例中处理数据)……但,cprsync容易管理和修复,可停止如果发生dd错误不是。...dd按下按键后将立即销毁目标Enter磁盘

重大危险丑陋警告(磁盘名称确实会改变)

磁盘名称(以及分区名称)/dev/可以根据它们的连接顺序进行更改,即第一个连接的磁盘按顺序获得第一个可用字母/dev/sda,然后下一个将被命名/dev/sdb,然后是第三个/dev/sdc/,依此类推……因此,如果两个磁盘断开连接,然后以不同的顺序再次连接,它们之前分配的名称可能会被交换,并且您的源磁盘可能会突然成为目标,dd并且它将被摧毁… 同样适用于所有类型的磁盘,例如 NVME、SSD 等。… 因此,除非您是经验丰富的用户,不要使用dd

注意:Clonezilla 详见这个答案更安全一些,并且性能应该与 相同dd

警告明确了吗?...如果为真;则继续。

您正在执行的操作dd称为分区/磁盘映像,您可以通过几种方式进行操作。

第一种方式(磁盘到磁盘

通过这种方式,您可以复制原始磁盘(忽略分区但包括它们) 数据作为映像复制到另一个磁盘...这将使目标磁盘成为源磁盘的精确映像...但是,目标磁盘上的额外空间不会被利用,因为映像仅占用与源磁盘上可读区域总大小相同的大小...目标磁盘上的任何数据、分区和图像都将被被摧毁... 在源和目标上的映像过程中,文件系统(即分区)不得挂载……可以使用类似这样的方法完成(/dev/sdb源在哪里,/dev/sdc目的地在哪里):

dd if=/dev/sdb of=/dev/sdc

第二种方式(分区到磁盘

通过这种方式,您可以将分区作为映像复制到另一个磁盘...这将使目标磁盘包含相同的分区(带有文件系统和数据) 到源分区...然而,目标磁盘上的额外空间未被利用,因为映像仅占用与源分区总大小相同的大小...目标磁盘上的任何数据、分区和映像都将被摧毁... 在源和目标上的映像过程中,文件系统(即分区)不得挂载……可以使用类似这样的方法完成(/dev/sdb1其中,源分区是哪里,/dev/sdc目标磁盘是哪里):

dd if=/dev/sdb1 of=/dev/sdc

第三种方式(磁盘/分区到文件)

通过这种方式,您可以将磁盘或分区作为映像复制到已安装文件系统上的文件中...这将使目标文件包含源分区/磁盘的相同映像...目标文件是可以就地安装、移动、复制和恢复的映像...文件系统,即分区,在源上的映像过程中不得安装...这种方法可以用类似这样的方法完成(其中/dev/sdb/dev/sdb1是源磁盘/分区,/mnt/backup是受支持文件系统的目标挂载点,file.img是图像文件的建议文件名):

dd if=/dev/sdb of=/mnt/backup/file.img

或者(对分区进行映像):

dd if=/dev/sdb1 of=/mnt/backup/file.img

评论

如果您是高级用户,那么您知道您的方法...但如果您是愿意节省数据和时间的普通用户,那么本部分适合您。

dd最适合复印/成像身体的处于原始数据模式的磁盘,即原始磁盘数据块……这些与 LV/分区上发生的数据操作/处理不同(逻辑设备/磁盘)和文件系统(数据结构由操作系统实现和使用,以控制数据的存储和检索方式)…在 LV/分区级别,尤其是在文件系统级别进行复制,不要使用dd…使用文件系统级别的工具,例如partclone或者cp或者rsync甚至tar

您可能会在互联网上找到有关使用dd“复制”磁盘分区的说明,他们会告诉您通过将源分区复制到目标分区来完成此操作(没有足够的解释说明使用此方法时还需要注意什么)例如像这样(不建议):

dd if=/dev/sdb1 of=/dev/sdc1

这可能在很多层面上出错,因为目标分区,如果存在,仅仅是一个逻辑边界,即逻辑(不是真的) 使用软件创建和识别的设备/磁盘...因此,您将对源分区进行映像处理,其区域由磁盘原始级别/dev/sdb1读取,其中的逻辑磁盘取决于软件标识符,以便操作系统正确使用...这些标识符在该映像处理之后可能不再有效,例如文件系统可能会更改...另一方面,如果目标分区例如dd/dev/sdc1/dev/sdc1 不存在/dev/sdc那么尝试以错误的方式创建分区有什么意义呢(dd不是磁盘分区工具) 虽然(如果成像操作成功纯粹是靠运气,而且成功率只有 50%)目标/dev/sdc1将包含一个文件系统(从源中复制/dev/sdb1)它实际上不是一个分区,并且目标表将不包含标识为分区的/dev/sdc分区表...但是,您很可能(/dev/sdc1如果我们保持乐观的话,50% 的时间)将看不到此不建议方法不会产生任何预期的结果,你最终会陷入一个循环,不知道哪里出了问题,比如这些(仅举几个例子……名单很长):

此外分割磁盘特定对于特定物理磁盘的一个独特几何结构) 程序...正确创建的分区深深植根于该磁盘的分区表及其目的/类型、文件系统、标志和几何设置...它们不应该被有选择地复制(使用低级工具,如dd)复制到具有不同分区表的另一个磁盘,并期望它能奇迹般地工作!...甚至可能发生更糟糕的事情,如果dd用于将分区从一个磁盘复制到另一个磁盘的分区,会破坏其文件系统,导致分区级别出现未分配的空间,并可能破坏其逻辑边界...如果您想要正确克隆分区,请使用其他分区克隆工具,这些工具可以正确完成任务,而不是dd...如果您必须使用dd,那么至少要保护您宝贵数据的完整性(假设保存数据是你的目标)并将其分区到物理磁盘而不是逻辑设备上,因为逻辑设备可能会在分区过程中严重损坏...是的,物理磁盘可以保存文件系统和数据而无需分区(读写速度可能会慢一点),并且就数据而言,它应该比将分区映像到分区更安全。

请看一下这个例子如何在 Linux 中创建交换分区因为它说明了分区是如何真正创建和设置的,覆盖了分区的一些底层深层根。

关于这个问题的一个好的、易读的资源是文件系统 - 分区/卷(逻辑磁盘分区)

相关内容