请选择 进入手机版 | 继续访问电脑版

【dataserver】视频数据清理脚本。

[复制链接]
查看298 | 回复0 | 2021-3-19 11:35:15 | 显示全部楼层 |阅读模式
本帖最后由 宋晓坤 于 2021-3-19 14:08 编辑

使用用户:阳光保险
备份服务器使用迁移的形式,由于数据量大存储空间有限,当前dataserver数据分区总大小4T,两个server服务器,每天视频数据共产生200G-300G,dataserver差不多存一个半月数据。
dataserver录像数据目录格式:dataserver存储路径/serverID/server存储路径
录像文件一天一个目录以年-月-日的格式生成,根据目录名称删除数据。阳光保险使用定时任务一个小时检查一次,如果占用率超过84%就删除一天历史数据。
定时任务格式:1 */1 * * * /bin/bash /data1/dataclean/dataclean.sh
脚本可以直接修改path地址使用,如果其他服务使用或者删除数量不同根据具体情况修改。
脚本内容:
  1. #!/bin/bash
  2. datasize=`df -h |grep data1|awk '{print $5}'|awk -F '%' '{print $1}'`
  3. path1=/data1/data/服务器1id/data.../
  4. path2=/data1/data/服务器2id/data.../
  5. if [[ $datasize -ge 84 ]]
  6. #客户监控系统85%告警
  7. then
  8.         delfile1=`ls -v $path1 | awk 'NR==1{print $1}'`
  9.         delfile2=`ls -v $path2 | awk 'NR==1{print $1}'`
  10.         echo "$(date +%Y/%m/%d\ %T)  Delete files in date1 $path1:$delfile1" >> /tmp/dataclean.log
  11.         echo "$(date +%Y/%m/%d\ %T)  Delete files in date1 $path2:$delfile2" >> /tmp/dataclean.log
  12.         rm -rf $path1$delfile1 $path2$delfile2
  13.         if [ -e "$path1$delfile1" -o -e "$path2$delfile2" ]; then
  14. #双中括号使用-o报错
  15.                 echo "$(date +%Y/%m/%d\ %T)  [ERROR]:Failed to delete file" >> /tmp/dataclean.log
  16.                 exit 1
  17.         else
  18.                 echo "$(date +%Y/%m/%d\ %T)  File deleted successfully" >> /tmp/dataclean.log
  19.                 exit 2
  20.         fi
  21. else
  22.         echo "$(date +%Y/%m/%d\ %T)  The size of data1 is $datasize%" >> /tmp/dataclean.log
  23.         exit 3
  24. fi
复制代码


删除多天数据脚本:
  1. #!/bin/bash
  2. datasize=`df -h |grep data1|awk '{print $5}'|awk -F '%' '{print $1}'`
  3. path1=/data1/data/服务器1id/data.../
  4. path2=/data1/data/服务器2id/data.../
  5. if [[$datasize -ge 89 ]]
  6. then
  7.         delfile1=`ls -v $path1 | awk 'NR<=5{print $1}'`
  8.         delfile2=`ls -v $path2 | awk 'NR<=5{print $1}'`
  9. #删5天
  10.         echo "$(date +%Y/%m/%d\ %T)  Delete files in date1 $path1:$delfile1" >> /tmp/dataclean.log
  11.         echo "$(date +%Y/%m/%d\ %T)  Delete files in date1 $path2:$delfile2" >> /tmp/dataclean.log
  12.         cd $path1
  13.         rm -rf $delfile1
  14.         cd $path2
  15.         rm -rf $delfile2
  16.         delfile1_1=`echo $delfile1 | awk '{print $1}'`
  17.         delfile1_2=`echo $delfile1 | awk '{print $2}'`
  18.         delfile1_3=`echo $delfile1 | awk '{print $3}'`
  19.         delfile1_4=`echo $delfile1 | awk '{print $4}'`
  20.         delfile1_5=`echo $delfile1 | awk '{print $5}'`
  21.         delfile2_1=`echo $delfile2 | awk '{print $1}'`
  22.         delfile2_2=`echo $delfile2 | awk '{print $2}'`
  23.         delfile2_3=`echo $delfile2 | awk '{print $3}'`
  24.         delfile2_4=`echo $delfile2 | awk '{print $4}'`
  25.         delfile2_5=`echo $delfile2 | awk '{print $5}'`
  26.         if [ -e "$path1$delfile1_1" -o  -e "$path1$delfile1_2" -o  -e "$path1$delfile1_3" -o -e "$path1$delfile1_4" -o -e "$path1$delfile1_5" -o -e "$path1$delfile2_1" -o  -e "$path1$delfile2_2" -o  -e "$path1$delfile2_3" -o -e "$path1$delfile2_4" -o -e "$path1$delfile2_5" ]; then
  27.                 echo "$(date +%Y/%m/%d\ %T) [ERROR]:Failed to delete file" >> /tmp/dataclean.log
  28.                 exit 1
  29.         else
  30.                 echo "$(date +%Y/%m/%d\ %T) File deleted successfully" >> /tmp/dataclean.log
  31.                 exit 2
  32.         fi
  33. else
  34.         echo "$(date +%Y/%m/%d\ %T)  The size of data1 is $datasize %" >> /tmp/dataclean.log
  35.         exit 3
  36. fi
复制代码
客户实际情况截图:

脚本截图.jpg

datacleansh.zip

1.49 KB, 下载次数: 5

脚本

回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则