我应该如何检查远程 smb serv 是否已安装?

我应该如何检查远程 smb serv 是否已安装?

我对 . 还很陌生mount。基本上,我在本地网络上有一个远程 SMB 服务,我想从其目录中复制图像,然后每 5 分钟重复一次。

我认为我需要做的是制作一个脚本来检查服务器是否已安装,如果没有安装,如果是,则不执行任何操作,然后运行 ​​rsync。

我能够设置 crontab (第一次)来删除目录中的所有现有文件,然后运行rsync​​,但我不确定应该如何处理 SMB 内容。我应该安装它,复制文件并卸载,还是应该保持连接?

顺便说一句,我正在使用 OSX。

答案1

如果您的服务器预计大部分时间都会启动并连接,那么我建议将安装保留在适当的位置。这样您就可以避免建立连接的一些开销。另一方面,如果您遇到网络丢失或类似的连接问题,则主动挂载可能会导致新写入的文件丢失数据,因为当网络消失时,文件系统将无法完全卸载。在此类意外卸载之后添加该--checksum标志可能是谨慎的做法rsync,这样不仅可以检查文件修改时间(假设--times),还可以检查文件内容。这应该会减少强制卸载带来的不利影响。

要检查是否安装了某些东西,只需grep在 的输出中查找它即可mount

另请注意的softhard选项mount.cifs,这将决定断开的连接是否会导致读取错误或程序挂起。我非常确定,使用该hard选项,即使连接失败,您也会看到已安装的遥控器。与soft,我一点也不确定。如果您看到文件系统仍然挂载,那么当连接恢复时您很有可能能够访问它。但是,如果连接不可用,该hard选项将导致您rsync挂起。

答案2

现在是 2022 年中期;这接受的答案已经10岁了。我认为答案仍然有效,但是mount肯定不是当今工作的最佳工具。我发现本次问答在寻找与OP的问题完全相同的解决方案时 - 我还需要它在Mac操作系统上运行。我也是一名 Linux 用户,所以我想我应该尝试更新以引起人们对findmnt.

我不知道它findmnt已经存在多久了,但它似乎比mount在脚本编写中使用有很多优点。该findmnt命令是util-linux;我相信它已包含在内默认情况下在大多数现代系统上。

findmnt就像文件系统的搜索引擎。它有很多过滤选项 - 避免混乱grep混乱图案这可能很难定义。如果找到匹配项,findmnt会将其打印到stdout,然后返回0;如果没有匹配,则findmnt简单地返回1

可惜苹果还没有提供这样的工具! ICYWWutil-linux可从 MacPorts 获得,但不幸的是它不包括findmnt.

相关内容