使用 cronjob 挂载会创建重复挂载吗?

使用 cronjob 挂载会创建重复挂载吗?

我有一个使用这个命令的安装

mount -t cifs -o username=xxx password = xxx //server_address //data_directory

不幸的是,这个挂载经常因为IT服务器维护而损坏,我必须重新挂载它。我决定每天使用上面的命令在 cronjob 上简单地重做挂载。

挂载仍然有效,但当我运行时findmnt,看起来我的目录有 10 个挂载,全部嵌套在彼此之下。有人遇到过这个吗?

如果挂载当前不存在,如何“覆盖”我的挂载或仅运行挂载命令?

非常感谢

答案1

umount /path/to/data_directory 然后mount再次

或者

只需添加-o remount到您的安装命令中

答案2

使用自动安装程序。设置它,以便当您不使用安装时,它会自动卸载,并且一旦您想再次使用它,它就会再次(透明地)安装。

将其与deadtime远程服务器上的 结合起来,您就可以开始了。


有一个systemd自动安装程序,但我没有使用过。这是我在自己的几个系统上运行的内容。

  1. /etc/auto.master

    /var/autofs/misc    /etc/auto.misc    --timeout 600
    

    然后mkdir /var/autofs/misc作为一次性操作

  2. /etc/auto.misc

    rShare -fstype=cifs,credentials=/usr/local/etc/cifs.secret,noperm,vers=3.0,iocharset=utf8      ://remoteServer/remoteShare
    

    然后将您的凭据放入 root 拥有的文件中/usr/local/etc/cifs.secret,并确保它也只能由 root 读取

    chown root.root /usr/local/etc/cifs.secret
    chmod 600 /usr/local/etc/cifs.secret
    
  3. 最后,将目录符号链接/var/autofs/misc/rShare到文件系统中要从中访问它的实际位置。例如,如果您通常使用/path/to/data那么您会使用这个

    cd /path/to                                # Parent of old mountpoint
    rmdir data                                 # Delete old directory
    ln -s /var/autofs/misc/rShare data    # Symlink from autofs
    

从现在开始,当您引用挂载处或挂载中的文件或目录时,/path/to/data将根据需要激活。 10 分钟(600 秒)空闲时间后,它将自动卸载。一切透明。

答案3

再次安装前请检查是否已安装。不带参数运行mount会给出当前挂载点的列表,您可以将其通过管道传输到 grep 中。

例如grep

if ! mount | grep -q //data_directory ; then
  mount -t cifs -o username=xxx password = xxx //server_address //data_directory
fi

这可以缩短为只有一行:

mount | grep -q //data_directory || mount -t cifs -o username=xxx password = xxx //server_address //data_directory

您还可以使用, 对输出的awk字段 3 进行精确匹配(仅测试搜索字符串是否出现在一行中的任何位置,这基本上足够好但并不完美):mountgrep

if ! mount | awk -v ec=1 '$3 == "//data_directory" {ec=0; last}; END {exit ec}' ; then
...
fi

(这需要 GNU awk 或 mawk 或任何其他能够理解该last语句的 awk 版本)


rsync顺便说一句,如果目标目录应该是单独安装的分区或网络安装,则检查文件系统是否已安装在类似的备份脚本中特别有用。您希望备份脚本打印一条错误消息,并在目标未安装时中止,否则备份将仅占用错误文件系统上的空间(并且以后可能不会被注意到,因为它将隐藏在安装点后面)当目标目录正确安装时)。

(我怎么知道的?因为我犯了一个错误,在编写备份脚本时,在运行 rsync 或其他程序之前没有进行检查...然后用它自己的副本填满了我的根文件系统)

相关内容