使用 mv 命令覆盖 /dev/sda

使用 mv 命令覆盖 /dev/sda

我在写入命令时出错,速度太快,导致“覆盖”(?)/dev/sda而不是移动目录中的文件/dev。我该如何恢复?

还有到底是什么/dev/sda?它是硬盘/SSD 安装的目录吗?

答案1

当我这样做时(使用常规文件):

echo 1 > source
echo 2 > target
cp -l target target2
mv source target
cat target2

然后我得到了2。这意味着什么都没有写入,我认为target它只是在重命名之前取消了链接。我可以检查 是否保留了它的 inode 编号,即使它之前存在。sourcels -i -1sourcetarget

另一项测试是

mv /dev/urandom /dev/sr0

它不会将数据发送到我的光驱。相反,之后的/dev/sr0行为就像/dev/urandom

结论是:您的/dev/sda文件已被其他“条目”替换(该条目也丢失了其原始名称)。重新启动将修复此问题,除非您的系统是旧的(或不常见的)系统,这些设备文件保持为静态。


到底是什么/dev/sda

它是一个特殊文件,通常对应于您的 HDD 或其他存储设备。Unix 通过主编号和次编号来识别此类资源。通常,主编号标识设备驱动程序,次编号标识驱动程序控制的特定设备(可能在多个设备中)。要查看这些数字,请尝试ls -l /dev/sda。我的输出是:

brw-rw---- 1 root disk 8, 0 Jul   8 00:48 /dev/sda

这个8, 0片段是一个<major>, <minor>元组。

我写道/dev/sda 通常对应于您的 HDD,因为在您的情况下(之后mv),您现在有了此名称下的其他内容。

它是硬盘/SSD挂载的目录吗?

不。当你挂载它时,命令就像

mount /dev/sda /a/directory/to/mount/to/

所以这是两件不同的事情。

(请注意,/dev/sda1传递给mount命令的通常是 或 ,而不是/dev/sda。这是因为sda1对应于分割sda对应于整个硬盘。文件系统通常位于分区内,但在没有分区的设备上也可能有一个文件系统,因此上述命令可能会发生。比较:单分区磁盘配置的用途)。

相关内容