Почему файлы образа CD не перечислены при монтировании в текущем каталоге?

Я собираюсь принять (очень опасный, я знаю), что Вы заканчиваетесь пространство на своем основном разделе и добавили новый диск.

/dev/sda1 / загружают/dev/sda2//dev/sdb1 / var

Принятие, которое Вы скопировали по / папке var на sda2 к разделу на sdb1, можно смонтировать sda2 во второй раз:

mount /dev/sda2 /root/tmp
cd /root/tmp/var
rm -rf *

Вы находитесь теперь в старом '/var' каталог, можно проверить создание файла, это не будет находиться под / var, но это будет там находиться под/root/tmp/var

Теперь можно безопасно удалить файлы onder/root/tmp/var и umount tmp.

Отказ от ответственности: Никакая гарантия, используйте на Ваш собственный риск, не доверяйте мне (или кто-либо еще в Интернете) берут резервные копии!

3
18.05.2013, 12:32
1 ответ

Именно, потому что Вы находитесь в каталоге, Вы монтируетесь в. Таким образом, Вы все еще ссылаетесь на содержание исходного каталога через исходный каталог.

Вы видите этот точно тот же самый эффект, когда Вы cd в каталог, который затем удален.

$ pwd
/home/saml/dirtodel

$ rmdir ../dirtodel

$ pwd
/home/saml/dirtodel

Как это может быть? Я все еще в каталоге, который был просто удален. Что продолжается?

В оболочке это тихо cd кому: /home/saml/dirtodel, выполните эту команду для обнаружения PID (идентификатор процесса), поскольку это - сессия удара:

$ echo $$
32619

Теперь, если Вы входите в/proc каталог того PID, мы видим то, что продолжается немного:

$ ls -l /proc/32619/ | head -10
total 0
dr-xr-xr-x 2 saml saml 0 May 18 07:40 attr
-r-------- 1 saml saml 0 May 18 07:40 auxv
-r--r--r-- 1 saml saml 0 May 18 07:40 cgroup
--w------- 1 saml saml 0 May 18 07:40 clear_refs
-r--r--r-- 1 saml saml 0 May 18 02:06 cmdline
-rw-r--r-- 1 saml saml 0 May 18 07:40 comm
-rw-r--r-- 1 saml saml 0 May 18 07:40 coredump_filter
-r--r--r-- 1 saml saml 0 May 18 07:40 cpuset
lrwxrwxrwx 1 saml saml 0 May 18 07:31 cwd -> /home/saml/dirtodel (deleted)

При списке первых нескольких файлов мы видим названный тот cwd, который обозначает текущий рабочий каталог. Заметьте, что это указывает на наше старое название и что это было "удалено".

Таким образом, это дает нам немного понимания, что продолжается, но где мы?

Интересно, если мы cd /proc/32619/cwd мы можем изменить каталоги на это волшебное местоположение. Если мы работаем df . команда мы видим, что находимся все еще на /home раздел:

$ pwd
/proc/32619/cwd
[saml@grinchy cwd]$ df -h .
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_grinchy-lv_home
                      245G  125G  108G  54% /home

Таким образом, что продолжается?

Даже при том, что наш каталог был удален, inode, который составляет его, не был. Вы видите это с stat команда. В оболочке это все еще в каталоге, который мы удалили:

$ stat .
  File: `.'
  Size: 0           Blocks: 8          IO Block: 4096   directory
Device: fd02h/64770d    Inode: 10486487    Links: 0
Access: (0775/drwxrwxr-x)  Uid: (  500/    saml)   Gid: (  501/    saml)
Access: 2013-05-18 07:48:52.674081972 -0400
Modify: 2013-05-18 07:48:44.378900038 -0400
Change: 2013-05-18 07:50:54.189747426 -0400

Мы видим, что существует все еще inode, 10486487, используем нами, но заметьте, что он имеет 0 ссылок. Это - то, что происходит, когда что-то добирается, удалил. Все ссылки на него удалены, и таким образом, ОС может затем удалить этот paritcular inode.

7
27.01.2020, 21:13

Теги

Похожие вопросы