
我在編寫命令時犯了一個錯誤,速度太快並且「覆蓋」(?)而不是在目錄/dev/sda
中移動檔案。/dev
我怎樣才能恢復它?
又到底是什麼/dev/sda
?是硬碟/SSD掛載的目錄嗎?
答案1
當我這樣做時(使用常規文件):
echo 1 > source
echo 2 > target
cp -l target target2
mv source target
cat target2
然後我明白了2
。這意味著沒有任何內容寫入,我認為target
它只是在重命名之前取消連結。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
(請注意,傳遞給命令的通常是or so mount
,而不是/dev/sda
。這是因為sda1
對應於分割而sda
對應於整個硬碟。檔案系統通常位於分割區內,但也可能在沒有分割區的裝置上有一個檔案系統,因此可能會發生上述命令。比較:單一分割磁碟配置的用途)。