由于环境中有备份设备,因此实际上有两种选择:在录音服务器上安装备份的agent,通过agent实现自动备份;另外就是通过CentOS的crontab(我理解为linux版的计划任务)功能,通过脚本执行。
现在的决定是使用crontab的方式进行,主要原因有以下:
- 对agent可能造成的影响不清楚(agent会做什么、怎么没有搞清楚,并且这些事情和第三方沟通起来我觉得很花时间)
- 备份的agent是否支持删除过期文件不清楚(沟通花时间)
- 录音文件很多,总容量很大。虽然备份设备有删重功能,但还是会占用很大的存储空间。备份设备扩容比买个移动硬盘麻烦多了。
如果使用crontab,那么我的设想是:
- 将异地存储(无论是共享文件夹还是移动硬盘)映射到录音服务器上。
- 通过find功能,查找符合条件的新增文件,然后cp过去映射的存储上。
- 再通过find功能,查找符合条件的旧文件,然后rm。
这里有几个问题需要解决:
- 如果录音服务器重启,那么映射的存储需要重新映射才可以确保脚本正常运行。这个可以通过编辑/etc/fstab文件,在其中增加所需的挂载点解决,因为该文件会在linux系统启动时执行。
- 一天的录音文件数量很多(4000以上),如果直接将find命令的结果通过-exec参数传给cp命令,可能会造成性能问题。这个可以通过xargs命令解决。
操作如下:
- 在/etc/fstab中添加需要自动挂载的存储设备
vi /etc/fstab
如果是普通用户,需要提升权限sudo vi /etc/fstab
然后在fstab中添加需要挂载的存储设备相关信息//source/path /destination/path cifs username=xxx,password=xxx 0 0#关于fstab更加详细的介绍可以通过man fstab查看。
- 在crontab中添加定期执行的任务