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