定时清理流媒体服务器录像自动化bash脚本

定时清理流媒体服务器保存录像文件夹

首先创建一个文件,解除读写权限

bash 复制代码
touch  rm_videos.sh
chmod 777 rm_videos.sh

将内容复制进去,将对应文件夹等需要修改的内容,根据自己的实际需求进行修改

bash 复制代码
#!/bin/bash

# 设置目标目录(修改为你的实际路径)
TARGET_DIR="/xx/xx/xxx"

# 检查目标目录是否存在
if [ ! -d "$TARGET_DIR" ]; then
  echo "目标目录不存在: $TARGET_DIR"
  exit 1
fi

# 进入目标目录
cd "$TARGET_DIR" || exit 1

# 获取所有子目录并按创建时间排序(最早在前)
# 注意:不同系统 stat 的字段可能不同,此处假设使用 Linux 的 %W(出生时间)
# 如果你的系统不支持 birth time,可以改用 mtime(修改时间)
FOLDERS=($(find . -maxdepth 1 -type d -not -path . -printf "%W %p\n" | sort -n | cut -d' ' -f2-))

# 检查是否超过5个文件夹
if [ "${#FOLDERS[@]}" -gt 5 ]; then  #此处5为保存的文件夹数量也就是对应的保存视频天数
  # 取最早创建的文件夹(第一个元素)
  OLDEST_FOLDER="${FOLDERS[0]}"
  echo "正在清理文件夹: $OLDEST_FOLDER"

  # 删除最早文件夹中的所有内容,包括文件夹
  rm -r "$OLDEST_FOLDER"
  
  echo "$OLDEST_FOLDER 清理完成。" >> /xx/xx/del.log  #将完成内容输出到指定的log文件内 >>为追加
else
  echo "文件夹数量未超过5个,无需清理。" >> /xx/xx/del.log #将完成内容输出到指定的log文件内
fi

写完之后,可以运行脚本试一下有没有效果

bash 复制代码
bash rm_videos.sh

如果没有问题,我们将该脚本写入系统定时任务

首先确认定时任务模块是否开启,如下图active为active即为在运行

bash 复制代码
 sudo service cron status
bash 复制代码
# 如果没有运行可以运行下列指令开启
sudo service cron start
# 输入下面命令,进入定时任务修改文件。注意:第一次进入时,会选择编辑软件,选择vim即可
crontab --e

我们可以看到图中有详细的案例教程

从前到后分别是

bash 复制代码
 m      h     dom(day of month)    mon(month of year)  dow(day of week)  command
分钟   小时   每月的第几天            每年的第几个月      每周的第几天      具体指令
bash 复制代码
#我们再次设置每天凌晨一点自动运行脚本
0 1 * * * /xx/xx/rm_videos.sh
#我们可以先设置每分钟执行,查看脚本是否成功执行
* * * * * /xx/xx/rm_videos.sh

去查看创建的del.log日志文件是否有内容(del.log输出内容在sh脚本中有体现,可以修改为自己想要的内容)

如果是多个文件夹内视频文件夹删除,使用下面代码

bash 复制代码
#!/bin/bash

# 设置根目录(修改为你自己的路径)
ROOT_DIR="/xx/xx/xx"

# 检查根目录是否存在
if [ ! -d "$ROOT_DIR" ]; then
  echo "根目录不存在: $ROOT_DIR"
  exit 1
fi

# 进入根目录
cd "$ROOT_DIR" || exit 1

# 遍历根目录下的所有子目录(只处理文件夹)
for SUB_DIR in */; do
  # 去除末尾斜杠
  DIR_NAME="${SUB_DIR%/}"

  echo "正在处理目录: $DIR_NAME"

  # 获取该目录下所有子目录并按创建时间排序(最早在前)
  # 注意:不同系统 stat 的字段可能不同,请根据需要调整 %W / %Y
  FOLDERS=($(find "$DIR_NAME" -maxdepth 1 -mindepth 1 -type d -printf "%W %p\n" | sort -n | cut -d' ' -f2-))

  COUNT=${#FOLDERS[@]}
  echo "找到 $COUNT 个子文件夹。"

  if (( COUNT > 5 )); then
    OLDEST_FOLDER="${FOLDERS[0]}"
    echo "正在清理最早文件夹: $OLDEST_FOLDER"

    # 删除该文件夹内所有内容
    rm -r "$OLDEST_FOLDER"

    echo "已清理: $OLDEST_FOLDER" >> /xxx/xxx/del.log
  else
    echo "文件夹数量未超过5个,无需清理。" >> /xxx/xxx/del.log
  fi

  echo "-----------------------------"
done
相关推荐
Dr.kangder2 小时前
嵌入式处理器仿真技术——Hypervisor 原理与实践
服务器·嵌入式硬件·架构·嵌入式
YFJ_mily3 小时前
【IEEE征稿】第二届智能制造、机器人与自动化国际学术会议(IMRA 2026)| 马鞍山12月举办,EI/Scopus稳定检索,3-5工作日录用
机器人·自动化·智能制造·工业自动化·ieee会议·rdlink研发家·安徽马鞍山会议
硅谷秋水4 小时前
EgoSteer:一种基于第一人称视角视频、实现可控灵巧操作的全栈系统
深度学习·机器学习·语言模型·机器人·音视频
星蓝_starblue4 小时前
零服务器、零数据库!开源growth-board,利用GitHub自动管理刷题/学习/求职全流程
服务器·数据库·程序人生·系统架构·node.js·github·改行学it
nbzy8884 小时前
电器铝锌压铸配件资料检索报错排查:倒排索引与结构化过滤的组合实现
自动化·内容生成·电器铝锌压铸配件
波罗丁牌7 小时前
uni-app 实现视频聊天、屏幕分享,支持Android、HarmonyOS、iOS
android·uni-app·音视频
云飞云共享云桌面7 小时前
广东精密机械设备工厂8-10人共享一台SolidWorks设计服务器
运维·服务器·3d·自动化·汽车·制造
jieyucx7 小时前
【高级利用】条件竞争与逻辑漏洞:与服务器赛跑的艺术
android·运维·服务器·web安全·文件上传
tianyuanwo7 小时前
服务器OS组件研发效能度量可视系统——顶层方案设计与阶段性规划
运维·服务器·度量系统
初级炼丹师(爱说实话版)8 小时前
Ubuntu服务器配置docker
服务器·ubuntu·docker