挂载点工作不正常

挂载点工作不正常

我们每天都会执行一个自动 rsnapshot 作业,该作业会写入已安装的磁盘。最近,它没有写入已安装的磁盘,而是写入主文件系统,从而慢慢填满可用空间。

是否有一个选项可以在挂载定义 (fstab) 中使用,以确保在挂载不可用时不会对主磁盘进行写入?还是我必须将其放入与快照相关的脚本中?

谢谢

答案1

当文件系统被挂载时,挂载点将获得该文件系统的根 inode 的权限。如果文件系统未挂载,则作为挂载点的目录只是父文件系统上的另一个目录。

您可以利用这一事实来防止意外写入可能未挂载的挂载点:

  1. 卸载目标文件系统。
  2. 将挂载点的权限更改为不太友好的权限。
    类似这样的操作chmod 0000 /path/to/mountpoint应该可以正常工作。
  3. 重新挂载目标文件系统
    挂载点的权限应更改以匹配已挂载文件系统的根 inode 的权限。

root请注意,如果执行写入操作并且绕过了常规权限检查,则此方法效果不佳。
您可以使用immutable标志(schguchgBSD 系统i属性在 Linux 系统上)但我个人没有测试过文件系统属性的行为。直观上看,它们应该与文件系统权限的工作方式相同。


请注意,理想情况下,您需要修改备份脚本以确保安装了适当的文件系统,否则您将不得不捕获并处理上述解决方案将生成的错误。
检测输出中没有适当的文件系统mount可能是一个更可靠的解决方案。

答案2

典型的解决方案是检查脚本,例如使用mountpoint命令。

if mountpoint -q $dir ; then
   echo "$dir is not mounted"
   exit 1
else
   echo "$dir is mounted" 
fi

另一种方法是使用以下方法进行测试stat

if [ `stat -fc%t:%T "$dir"` != `stat -fc%t:%T "$dir/.."` ]; then
    echo "$dir is mounted"
else
   echo "$dir is not mounted"
   exit 1
fi

答案3

有点旧了,但以防别人发现它。

参见 /etc/rsnapshot.conf

# If no_create_root is enabled, rsnapshot will not automatically create the
# snapshot_root directory. This is particularly useful if you are backing
# up to removable media, such as a FireWire or USB drive.
#
no_create_root  1

相关内容