CentOS下文件的自动备份及清理

时间:2021-03-29 08:00:15
最近被要求对录音服务器做录音文件的自动管理,说白了就是定期将文件复制到异地(另外一台服务器或者移动设备)。


由于环境中有备份设备,因此实际上有两种选择:在录音服务器上安装备份的agent,通过agent实现自动备份;另外就是通过CentOS的crontab(我理解为linux版的计划任务)功能,通过脚本执行。


现在的决定是使用crontab的方式进行,主要原因有以下:
  • 对agent可能造成的影响不清楚(agent会做什么、怎么没有搞清楚,并且这些事情和第三方沟通起来我觉得很花时间)
  • 备份的agent是否支持删除过期文件不清楚(沟通花时间)
  • 录音文件很多,总容量很大。虽然备份设备有删重功能,但还是会占用很大的存储空间。备份设备扩容比买个移动硬盘麻烦多了。

如果使用crontab,那么我的设想是:
  1. 将异地存储(无论是共享文件夹还是移动硬盘)映射到录音服务器上。
  2. 通过find功能,查找符合条件的新增文件,然后cp过去映射的存储上。
  3. 再通过find功能,查找符合条件的旧文件,然后rm。


这里有几个问题需要解决:

  1. 如果录音服务器重启,那么映射的存储需要重新映射才可以确保脚本正常运行。这个可以通过编辑/etc/fstab文件,在其中增加所需的挂载点解决,因为该文件会在linux系统启动时执行。
  2. 一天的录音文件数量很多(4000以上),如果直接将find命令的结果通过-exec参数传给cp命令,可能会造成性能问题。这个可以通过xargs命令解决。


操作如下:

  1. 在/etc/fstab中添加需要自动挂载的存储设备
    vi /etc/fstab
    如果是普通用户,需要提升权限
    sudo vi /etc/fstab
    然后在fstab中添加需要挂载的存储设备相关信息
    //source/path /destination/path cifs username=xxx,password=xxx 0 0#关于fstab更加详细的介绍可以通过man fstab查看。
  2. 在crontab中添加定期执行的任务