Перезаписал / dev / sda командой mv

321
Anosen

Я сделал ошибку, когда писал свою команду слишком быстро и «переписал» (?) /dev/sdaВместо перемещения файла в /devкаталоге. Как я могу восстановить это?

И что именно /dev/sda? Это каталог, где смонтирован жесткий диск / SSD?

1
Перезагрузка восстановит все ваши файлы / dev. Ответ [This] (https://stackoverflow.com/a/18423187/7544655) на stackoverflow многое объясняет о файлах устройства. doriclazar 6 лет назад 1
Вы имеете в виду, что запускали `mv somefile / dev / sda`? Я бы предположил, что он работает аналогично `cp`, то есть начальная часть вашего диска перезаписывается данными этого файла. Данные, которые изначально находятся на этой части диска, будут представлять собой MBR, таблицу разделов и, возможно, часть файловой системы на первом разделе, а может и больше. Это зависит от размера файла, который вы переместили. Tom Yan 6 лет назад 1

1 ответ на вопрос

1
Kamil Maciorowski

Когда я делаю (с обычными файлами):

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?

Это специальный файл, который (обычно) соответствует вашему жесткому диску или другому хранилищу. 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соответствует всему жесткому диску. Файловые системы обычно живут внутри разделов, но возможно иметь один на устройстве, где нет разделов, поэтому может произойти приведенная выше команда. Сравнение: использование конфигурации с одним разделом диска ).

Итак, «/ dev / sda» - это всего лишь файл, целью которого является предоставление информации о первом диске SCSI / SATA [ссылка] (http://wiki.linuxquestions.org/wiki//dev), подключенном к компьютеру. право ? Anosen 6 лет назад 0
И я мог бы испортить содержимое моего диска, только если бы мне каким-то образом удалось перезаписать каталог, на котором смонтирован мой диск, файлом, который я скопировал, что невозможно (?). В любом случае, спасибо за ваш ответ и прошу прощения за мой плохой английский, но я не являюсь носителем языка :) Anosen 6 лет назад 0
Ох, и действительно, перезагрузка исправила проблему, почти забыл Anosen 6 лет назад 0