我有一个使用这个命令的安装
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
自动安装程序,但我没有使用过。这是我在自己的几个系统上运行的内容。
在
/etc/auto.master
/var/autofs/misc /etc/auto.misc --timeout 600
然后
mkdir /var/autofs/misc
作为一次性操作在
/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
最后,将目录符号链接
/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 进行精确匹配(仅测试搜索字符串是否出现在一行中的任何位置,这基本上足够好但并不完美):mount
grep
if ! mount | awk -v ec=1 '$3 == "//data_directory" {ec=0; last}; END {exit ec}' ; then
...
fi
(这需要 GNU awk 或 mawk 或任何其他能够理解该last
语句的 awk 版本)
rsync
顺便说一句,如果目标目录应该是单独安装的分区或网络安装,则检查文件系统是否已安装在类似的备份脚本中特别有用。您希望备份脚本打印一条错误消息,并在目标未安装时中止,否则备份将仅占用错误文件系统上的空间(并且以后可能不会被注意到,因为它将隐藏在安装点后面)当目标目录正确安装时)。
(我怎么知道的?因为我犯了一个错误,在编写备份脚本时,在运行 rsync 或其他程序之前没有进行检查...然后用它自己的副本填满了我的根文件系统)