如何刪除同一目錄的多個連結?

如何刪除同一目錄的多個連結?

我的 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 層允許將檔案和目錄「綁定安裝」到另一個位置。結果確實看起來像硬鏈接,但實際上並不存在於磁碟上 - 綁定掛載就像常規掛載一樣位於內存中。

此功能還意味著單一檔案系統可以同時安裝在多個位置。例如,同樣/dev/sda1可以安裝在/mnt/usbdrive /var/lib/lxd/mnt-usbdrive

所有這些魔法坐騎都可以透過跑步看到findmnt或者mount

(Windows 和 FreeBSD 也具有類似的功能,例如 nullfs。)

相關內容