自动清理七天前的监控记录

       在安装好自己的监控安保系统之后,我又修改了一些捕捉动态的设置,后来经过48小时的不间断运行,看起来还是那么回事,然鹅就我的所有截图和视频都存放在/var/lib/motion/之中,未曾删除,这么一来时间久了我的小机器岂不是被我的面部截图存满了?

查阅motion的项目描述之后,发现motion没有自动删除截图和视频的设置,于是我还是要自己动手删除,又或者自己动手bash+crontab来定点清除。

  • 目的:维持motion所占的存储空间在一个合理的范围,不影响服务器,也不降低监控的记录功能
  • 要求:定时清除.mkv视频文件,只保证一个礼拜的记录
  • 方法

1.编写bash用以定位文件位置,判断文件时效,以及超市文件处理动作

2.编写crontab用以定时激发bash

3.实现每天凌晨1点,自动清理七天前的监控记录。

结语:在没有条件的情况下手动备份和删除也是一种选择:

  • 指令:vim bashyourname.sh
    • cd /dev
    • sudo mkdir motion_bash
    • touch /dev/motion_bash/motion_auto_purge.sh
    • vim /dev/motion_bash/motion_auto_purge.sh
      • i #按i进入编辑模式
      • !/bin/bash
      • find /var/lib/motion/ -name ‘*.mkv’ -mtime +7 -exec rm -rf {} \;
      • ESC #按esc键切换到阅读模式
      • :wq #按 :wq 保存并推出
    • #需要验证bash是不是你所要的,可以直接执行bash,但你要先让整个/dev/motion_bash/motion_auto_purge.sh是[可读的]也是[可执行]的
      • sudo chmod 755 /dev/motion_bash/motion_auto_purge.sh
      • sudo chmod +X /dev/motion_bash/motion_auto_purge.sh
      • /dev/motion_bash$ /dev/motion_bash/motion_auto_purge.sh #在此处直接执行bash,没有任何报警表示成功
  • 指令:crontab -e
    • 59 23 * * * /bash/sh /dev/motion_bash/motion_auto_purge.sh&>/dev/null
    • 利用cron table来每天夜里执行删除7天前文件的bash
  • 指令:scp -r /var/lib/motion/ siem*@192.168.1.1**:/Users/siemen7/Downloads #将监控视频远程备份到另一台电脑
  • 指令:rm -rf * # cd到/var/lib/motion/ 后,删除全部文档

最后:由于会手动或者自动将监控视频加入oscm的/media/ExFAT/motion中,我在osmc中的crontable加入自动删除监控文档的命令:

0 1 * * * /bash/sh /dev/motion_bash/motion_auto_purge.sh&>/media/ExFAT/motion
0 3 * * * /sbin/reboot
也可以编辑一个脚本,执行更加复杂的“选择&删除”
bash in /dev/motion_bash/motion_auto_purge.sh
context as below:
#!/bin/bash find /var/lib/motion/ -name '*.*' -mtime +7 -exec rm -rf {} \;