同じディレクトリへの複数のリンクを削除するにはどうすればよいですか?

同じディレクトリへの複数のリンクを削除するにはどうすればよいですか?

壊れた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 には、/mnt/usbdrive にマウントされた USB ドライブのすべての内容が表示されます。両方のディレクトリにその内容が表示され、一方のディレクトリでの変更はもう一方のディレクトリにも反映されます。

しかし、これらのディレクトリを削除したい場合、問題が発生します。なぜなら、lxd の下にあるディレクトリのみを削除したいのであって、それらが指す実際のディレクトリやその内容を削除したいわけではないからです。 を使用してみましたunlinkが、ディレクトリでは機能しません。

答え1

試しumountに -ing してみましょう。

Linux の VFS レイヤーでは、ファイルとディレクトリを別の場所に「バインド マウント」できます。結果は確かにハードリンクのように見えますが、実際にはディスク上には存在しません。バインド マウントは、通常のマウントと同様にメモリ内にあります。

この機能は、1つのファイルシステムを一度に複数の場所にマウントできることも意味します。たとえば、同じファイルシステム/dev/sda1/mnt/usbdrive そしての上/var/lib/lxd/mnt-usbdrive

このような魔法の乗り物はすべて、findmntまたはmount

(Windows と FreeBSD にも、nullfs などの同様の機能があります。)

関連情報