如何将文件系统挂载到现有(非空)目录上?

如何将文件系统挂载到现有(非空)目录上?

如何将新 fs (fuse) 挂载到应用程序正在写入的现有目录?问题详情:我已将 /var 挂载为 ext4。我的应用程序将数据写入 /var/lib 目录(/var/lib 未挂载)。如何在不重新启动应用程序的情况下执行此操作?尝试为 /var/lib 创建挂载时,我看到以下消息。我担心会丢失 /var/lib 中的现有数据,因此无法继续使用选项“nonempty”。"

启动保险丝文件系统保险丝:挂载点不为空保险丝:如果您确定这是安全的,请使用“非空”挂载选项

谢谢,Dinesh

答案1

正如消息所述,您需要传递nonempty挂载选项:

sudo mount.fuse /dev/device /var/lib/your_folder -o nonempty

man mount.fuse详情请见:

非空
允许挂载非空文件或目录。默认情况下,这些挂载会被拒绝,以防止意外掩盖数据,例如,这可能会阻止自动备份。

注意:您不应直接安装,/var/lib因为它被许多应用程序使用。

答案2

您可以按照其他答案中所述进行挂载,但您挂载的目录 (/var/lib/) 中的数据将不可用,直到您再次卸载。这意味着使用 /var/lib/ 的其他程序可能会失败。

而且,根据您的应用程序如何处理它写入的文件,它可能根本不起作用。如果程序在启动时打开文件,进行多次写入,然后在终止前关闭文件,则可能存在过时的文件句柄,并且写入失败。另一方面,如果程序每次写入文件时都执行打开 - 写入 - 关闭,它可能会起作用。

相关内容