
コマンドを速く書きすぎたために、ディレクトリ/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
名前変更される前にリンクが解除されただけであることを意味します。 を使用すると、が以前存在していたとしても inode 番号を保持しているls -i -1
ことを確認できます。source
target
もう一つのテストは
mv /dev/urandom /dev/sr0
光学ドライブにデータを送信しません。代わりに、その後は/dev/sr0
として動作します/dev/urandom
。
結論は次のとおりです。あなたの/dev/sda
エントリは他の「エントリ」に置き換えられました (これも元の名前を失いました)。システムがこれらのデバイス ファイルを静的に保持する古い (または珍しい) システムでない限り、再起動するとこの問題は修正されます。
また、正確には何ですか
/dev/sda
?
これは、(通常) HDD または別のストレージに対応する特別なファイルです。 Unix は、このようなリソースをメジャー番号とマイナー番号で識別します。 一般に、メジャー番号はデバイス ドライバーを識別し、マイナー番号はドライバーが制御する特定のデバイス (多数のデバイスのうちの 1 つ) を識別します。 これらの番号を確認するには、 を試してください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/
つまり、これらは2つの異なるものです。
/dev/sda1
(コマンドに渡されるのは通常 または でありmount
、 ではありません/dev/sda
。これは、sda1
が に対応するためです。パーティションsda
一方、HDD全体ファイルシステムは通常パーティション内に存在しますが、パーティションがないデバイス上にファイルシステムが存在する可能性もあるため、上記のコマンドが実行される場合があります。比較:単一パーティションディスク構成の用途)。