У меня есть жесткий диск, подключенный через USB-порт.7 ГБсвободного места, которое я попытался заполнить псевдослучайными данными с помощью следующих команд:
$ cd /media/username/volume_name
$ sudo dd if=/dev/urandom of=random_data_file.txt
random_data_file.txt
ранее не существовало. Я ожидал, что команда создаст файл, запишет в него псевдослучайные данные и остановится, когда содержащий его раздел заполнится. В строке состояния файлового менеджера в конечном итоге отобразилось 0 bytes
свободное место. Но dd
команда не остановилась, и ни эмулятор терминала, ни файловый менеджер не выдали никаких уведомлений о том, что диск заполнен. После того, как я завершил команду с помощью Ctrl+C
, вывод терминала гласил40 ГБбыло написано. Я выбрал файл в менеджере, в строке состояния которого также отображался его размер как40 ГБ, что на 33 ГБ больше предыдущего объема свободного места.
- Есть ли вероятность, что эта команда перезаписала или изменила некоторые из моих других файлов, раздел или другие разделы? Или это означает,
random_data_file.txt
что было записано и перезаписано 40 ГБ / 7 ГБ = 5,7 раз? Если последнее, то почему файловый менеджер отобразил его размер больше 7 ГБ? После удаленияrandom_data_file.txt
с помощью файлового менеджера его строка состояния возвращается к отображению свободного места в размере 7 ГБ. - Как правильно использовать
dd
команду для создания и записи псевдослучайных данных в выходной файл до тех пор, пока содержащий его раздел не заполнится, не перезаписывая ничего (кроме свободного места на том же разделе), включая этот выходной файл?
решение1
Если предположить, что ваше дисковое оборудование исправно (а не мошенническая SD-карта, показывающая фальшивое доступное пространство), а ваша файловая система не повреждена поврежденными свободными списками и файлами, блоки которых все еще находятся в свободном списке, то dd if=/dev/urandom of=random_data_file.txt
диск не будет поврежден и ничего не будет перезаписано (кроме random_datafile.txt).
Вероятно, вам не нужно было указывать sudo перед ней, и если вы не уверены, что ваша команда dd верна, вам определенно не следует запускать ее как sudo.
Одна из возможных причин, по которой было записано больше данных, чем вы ожидали, заключается в том, что большинство файловых систем резервируют немного свободного места (обычно 5%), чтобы root мог продолжать запись, когда обычные пользователи видят, что диск заполнен. (Опять же, не делайте этого с помощью sudo...)