我目前正在尝试理解我发现的一些代码,这些代码会卸载驱动器,然后对其执行操作(这对我来说似乎很奇怪)。
情况如下:我有一个名为 /dev/sda1 的挂载,它指向本地硬盘。
然后我有命令unmount /dev/sda*
。接下来是解压文件并将结果传送到 ntfsclone 的命令:
ntfsclone -r -O /dev/sda1 -
此后还有另一个unmount /dev/sda*
. ,后跟 dd ,输出文件再次是同一个文件夹:dd of=/dev/sda count=1 bs=....
。
因此总的来说:
unmount
ntfsclone
unmount
dd
全部进入 /dev/sda1。
我不明白的是那里到底发生了什么。我知道 ntfsclone 用于创建硬盘驱动器映像的克隆,而 dd 用于(重新)创建启动分区。我不明白的是 umount 背后的可能原因。这实际上是我的问题:
umount 有什么用 / 它们在那里做什么 / 它对那里的操作有什么影响(因为据我了解那里的操作,它们正在进入未安装的设备)?
注意我只输入了我认为必要查看命令功能的参数和代码部分(因此 dd 自然也有一个 if 参数,...。
答案1
一方面,内核软件能够读写磁盘驱动器,但只能读写整个块和/或扇区。另一方面,不同的软件(文件系统驱动程序)能够将这些块和扇区视为文件系统,并读写文件和目录。为了使文件系统驱动程序正常工作,必须在磁盘上的物理块和文件夹结构之间建立映射。这称为安装磁盘。
但是,在复制整个磁盘时,您不希望在开始复制后更改文件系统。为了防止这种情况发生,您需要卸载文件系统。现在,只有低级命令才能访问磁盘。ntfsclone
和dd
是低级命令的示例,它们保证在繁忙时不会更改文件系统。