我在写入命令时出错,速度太快,导致“覆盖”(?)/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 编号,即使它之前存在。source
ls -i -1
source
target
另一项测试是
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
对应于整个硬盘。文件系统通常位于分区内,但在没有分区的设备上也可能有一个文件系统,因此上述命令可能会发生。比较:单分区磁盘配置的用途)。