如何防止访问未挂载的挂载点

如何防止访问未挂载的挂载点

好的,我在 fstab 中有这个

  //windows_mashine/Backup /backups cifs credentials=/root/.credentials,rw,_netdev,iocharset=utf8,uid=1000 0 0

我的 cron 中有 rsnapshot,它将 /etc/ 和 /usr/local/ 以及一些其他文件备份到 /backups

最近我发现,当其他机器停机且 /backups 无法挂载时,rsnapshot 备份会挂载到物理文件夹 /backups,从而占用分区 / 空间。我该如何避免这种情况?

当未安装时,我可以阻止对 /backups 进行任何写入吗(rsnapshot 以 root 身份运行,因为它需要备份一些系统文件)

答案1

另一个选项是将目录设置为不可变。为此,您需要在卸载挂载点的情况下运行以下命令。

chattr +i /backups

我在任何仅用作挂载点的目录上执行此操作,只是为了防止这种情况发生。因为在某些情况下,您无法添加检查来查看是否已挂载某些内容。例如,如果该过程不是您控制的脚本,或者是生成或移动数据的人。在这种情况下,这种方法将防止不必要的数据写入未挂载的挂载点。不过,我仍然会将挂载检查添加到您的脚本中,以便您可以输出有意义的错误。

答案2

为什么不让备份脚本测试 /backups 是否已安装,如果没有则退出?

mount | grep -q /backups || exit 1

答案3

处理此问题的最简单方法是直接使用 rsnapshot。

你应该看看这个选项no_create_root

高血压

相关内容