Как удалить несколько ссылок на один каталог?

269
Karl

У меня сломана установка lxd, и я хочу полностью удалить ее и начать заново, но есть проблема. / var / lib / lxd / devices / desktop содержит множество подкаталогов, связанных с каталогами в других местах файловой системы (даже на разных дисках), таких как

drwxr-xr-x 28 karl karl 4096 Apr 11 15:40 disk.shareName.home-karl drwxr-xr-x 4 nobody nogroup 4096 Apr 14 12:07 disk.thor.mnt-thor drwxr-xr-x 2 root root 4096 Mar 29 14:02 disk.usbdrive.mnt-usbdrive 

Например, если я удаляю файл из disk.thor.mnt-thor, он также удаляется из / home / storage (обе директории указывают на одно и то же место). disk.usbdrive.mnt-usbdrive показывает все содержимое моего usb-диска, смонтированного в / mnt / usbdrive. Оба каталога показывают его содержание, а изменения в одном отражаются в другом.

Но теперь, если я хочу удалить эти каталоги, у меня возникает проблема, потому что я просто хочу удалить эти каталоги в lxd, а не фактические каталоги, на которые они указывают, а не их содержимое. Я пытался использовать unlink, но это не работает на каталогах.

2
Если бы это были жесткие ссылки, `rm` просто удалил бы ссылку, и количество ссылок на место назначения уменьшилось бы на единицу. tripleee 6 лет назад 0

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

1
grawity

Попробуйте umountих.

Слой VFS в Linux позволяет «монтировать» файлы и каталоги в другое место. Результат действительно похож на жесткую ссылку, но на самом деле не существует на диске - привязные монтирования находятся в памяти, как обычные монтирования.

Эта функция также означает, что одна файловая система может быть смонтирована в нескольких местах одновременно. Например, то же самое /dev/sda1может быть установлено в /mnt/usbdrive и на /var/lib/lxd/mnt-usbdrive.

Все такие магические маунты можно увидеть, запустив findmntили mount.

(Windows и FreeBSD также имеют схожие функции, например, nullfs.)

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