我正在学习Linux中的dd命令。出于测试目的,我启动了以下命令:
sudo dd bs=4M if=/dev/mmcblk0 of=/media/some_remote_host/stuff/myImage.img我知道dd是用来拍摄给定磁盘/驱动器的图像的。但我很好奇,它是否包括按照Unix文件结构(档案结构)安装文件夹,如/mnt或/media。想查一查却找不到。如果它包含/mnt和/media目录,这是否意味着它可能处于无限循环中?因为它会在写入/media文件夹时索引并开始存储它的内容。或者当扫描所有文件夹并将其带到内存中时,就会发生*.img的实际写入。
TL;DR:dd命令是否将/mnt和/media文件夹包括到图像中?
希望你能在这些问题上给我一些启发。谢谢。
设备规格:
发布于 2021-07-20 00:36:16
dd对文件系统中的挂载、文件夹或unix文件结构一无所知。dd只知道原始数据以及原始数据和数据块的一些简单转换。它最初设计用于从设备(包括磁盘和磁带)读取和写入数据,并能够处理在阻塞数据和流数据之间来回更改该数据的结构,并进行一些琐碎的字符转换和填充调整。
在可写挂载文件系统的设备上运行dd if=是危险的,因为在dd读取文件系统时,该文件系统可能会改变。已读取的块dd可能会更改(dd未看到的更改),同时未读取的块也会被更改,其结果将是输出上文件系统的损坏图像。
由于dd是从(大概)固定大小的块设备读取的,并且在不了解底层文件系统的情况下读取它,如果要将输出写入同一个文件系统中的文件,则它不会是一个无限循环,但它会增加输出映像成为损坏文件系统的可能性和严重性。
由于安装在目录上的文件系统不是父文件系统的一部分(但(空的)目录是),它们将不在dd输出映像中(但是目录本身也是,如果挂载点在挂载之前不是空的,则可能包含在挂载点下的文件)。
发布于 2021-07-21 01:59:42
dd将从if (输入文件)读取并将其转储到of (输出文件),它将是"if“的二进制副本。这些文件可以是文件系统文件、文件系统本身、原始设备等等。这个命令不会从驻留在" if“中的数据结构中产生任何内容,如果它是一个文件系统,它将复制它,不管操作系统是否识别它。但是,不建议在安装的文件系统设备上运行它(例如if=/dev/sdb3 3)。
由于它是一点一点的复制,dd命令在到达远程共享的挂载点时不会识别,因此,没有无限循环,但我同意@ when 10489,这是危险的。
如果您试图备份根文件系统,我建议在另一个系统(提取您的卡)或从另一个卡启动它,并将备份放到远程位置或位于新根文件系统中的img文件。
https://unix.stackexchange.com/questions/659094
复制相似问题