Вы можете записывать файлы или другие входные потоки, /dev/null
но не в каталоги. Если вы попытаетесь переместить каталог в /dev/null
него, появится сообщение об ошибке, поскольку /dev/null
это не каталог, а файл.
Однако, поскольку вы хотите поэкспериментировать /dev/null
, вам сначала предлагается узнать последствия перемещения файла для перезаписи /dev/null
и способы восстановления после этой ситуации:
Как предложено @Rmano в этом ответе на этот вопрос, для того, чтобы поэкспериментировать с ним, /dev/null
нам лучше создать его копию, а затем провести наши эксперименты. Итак, давайте создадим/tmp/null
и используем его в наших экспериментальных целях:
sudo mknod -m 0666 /tmp/null c 1 3
Теперь вперед, /tmp/null
это наше /dev/null
для всех целей:
Давайте создадим test_file
и test_dir
внутри каталог под названиемask_ubuntu
.
$ mkdir ask_ubuntu
$ cd ask_ubuntu
$ touch test_file
$ mkdir test_dir
$ echo "Let us test if we can recover our test_file." > test_file
Ниже показано содержание ask_ubuntu
каталога:
$ ls -la
total 12
drwxr-xr-x 3 aditya aditya 4096 Mar 18 17:10 .
drwxr-xr-x 4 aditya aditya 4096 Mar 18 17:10 ..
drwxr-xr-x 2 aditya aditya 4096 Mar 18 17:10 test_dir
-rw-r--r-- 1 aditya aditya 0 Mar 18 17:10 test_file
Теперь попробуйте перейти test_file
к /tmp/null
и увидеть содержимоеask_ubuntu
:
$ sudo mv test_file /tmp/null # This succeeds
$ ls -la
total 12
drwxr-xr-x 3 aditya aditya 4096 Mar 18 17:12 .
drwxr-xr-x 4 aditya aditya 4096 Mar 18 17:10 ..
drwxr-xr-x 2 aditya aditya 4096 Mar 18 17:10 test_dir
Команда выполнена успешно и test_file
больше не доступна. Теперь попробуйте перейти test_dir
к тому, /tmp/null
что не удается:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dir
все еще присутствует внутри ask_ubuntu
:
$ ls -la
total 12
drwxr-xr-x 3 aditya aditya 4096 Mar 18 17:12 .
drwxr-xr-x 4 aditya aditya 4096 Mar 18 17:10 ..
drwxr-xr-x 2 aditya aditya 4096 Mar 18 17:10 test_dir
Теперь давайте подумаем, сможем ли мы восстановить наши данные test_file
из /tmp/null
:
$ cat /tmp/null
Let us test if we can recover our test_file.
Таким образом, он все еще там, и /tmp/null
который был специальным файлом, был перезаписан, и он стал, как и любой другой обычный файл. Мы можем восстановить наш файл, скопировав, /tmp/null
как и любой другой файл:
$ cp /tmp/null our_test_file
$ cat our_test_file
Let us test if we can recover our test_file.
Файл восстановлен.
Заметка:
Если вы не создавали /tmp/null
и не пытались использовать эти команды напрямую /dev/null
; убедитесь, что вы восстановили файл (если вам нужно), запустив cp /dev/null our_test_file
; и восстановите /dev/null
для целей, которые существуют в нашей системе, выполнив следующие команды, как указано в связанном вопросе, как можно скорее:
$ sudo rm /dev/null
$ sudo mknod /dev/null c 1 3
$ sudo chmod 666 /dev/null
Вывод:
Таким образом, невозможно переместить каталог в, /dev/null
и, следовательно, нет вопроса о восстановлении каталога оттуда.
Что касается файлов, если вы непосредственно перемещаете файлы в /dev/null
, вы все равно можете восстановить их, как показано выше. Однако есть два исключения:
В течение периода, который вы запускаете, sudo mv test_file /dev/null
и cp /dev/null our_test_file
, если какой-либо корневой скрипт в системе перезаписывает его, запустив echo "Whatever text the root script wants to send to /dev/null" > /dev/null
(или другие подобные команды). Тогда у нас нет простого способа восстановить наш файл.
Если вы перезагрузите систему между запуском этих двух команд. /dev/null
воссоздается при загрузке, поэтому наш файл теряется, когда мы выключаем компьютер.
Но если вы хотите восстановить входные потоки, например echo "Stream this line to /dev/null" > /dev/null
, вы не сможете восстановить это, поскольку /dev/null
это специальный файл для удаления ненужных файлов и входных потоков, и, как упоминается в статье в Википедии, он не предоставляет никаких данных процессу, который читает из него.
Ссылка: статья в Википедии/dev/null