我对 . 还很陌生mount
。基本上,我在本地网络上有一个远程 SMB 服务,我想从其目录中复制图像,然后每 5 分钟重复一次。
我认为我需要做的是制作一个脚本来检查服务器是否已安装,如果没有安装,如果是,则不执行任何操作,然后运行 rsync。
我能够设置 crontab (第一次)来删除目录中的所有现有文件,然后运行rsync
,但我不确定应该如何处理 SMB 内容。我应该安装它,复制文件并卸载,还是应该保持连接?
顺便说一句,我正在使用 OSX。
答案1
如果您的服务器预计大部分时间都会启动并连接,那么我建议将安装保留在适当的位置。这样您就可以避免建立连接的一些开销。另一方面,如果您遇到网络丢失或类似的连接问题,则主动挂载可能会导致新写入的文件丢失数据,因为当网络消失时,文件系统将无法完全卸载。在此类意外卸载之后添加该--checksum
标志可能是谨慎的做法rsync
,这样不仅可以检查文件修改时间(假设--times
),还可以检查文件内容。这应该会减少强制卸载带来的不利影响。
要检查是否安装了某些东西,只需grep
在 的输出中查找它即可mount
。
另请注意的soft
和hard
选项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
.