This commit is contained in:
Ankle committed 2026-08-06 18:33:25 +08:00
1 parent c460ae8fbd
commit 71c4711282
6 files changed
+303 -95

No files matched your search

+26 -6
View File
@@ -35,6 +35,7 @@ cleanup-smartcam-data/
```text
/var/lib/cleanup-smartcam-data/
/run/cleanup-smartcam-data.lock
/userdata/data/.recording-paused-low-disk
```
## 环境要求
@@ -42,7 +43,8 @@ cleanup-smartcam-data/
- smart-cam 容器名:`smart-cam`
- 数据目录:`/userdata/data`
- 容器内成功记录:`/smart-cam/kafka_sender/processed_files.log`
- 采集进程命令包含:`build/bin/smart_camera`
- `smart_camera` 支持读取 `/smart-cam/data/.recording-paused-low-disk`
(与宿主机 `/userdata/data/.recording-paused-low-disk` 是同一挂载文件)
- 宿主机使用 Docker 和 systemd
## 安装
@@ -83,14 +85,30 @@ sudo ./scripts/install.sh
```
- 超过60分钟的0字节 raw,如果未被进程占用,也会按上述三件套删除;
- 每次运行都会对`videos_raw/videos/annotations`按base进行完整性对账;
- 三个成员齐全才视为完整三件套;
- 缺少任意成员且所有现存成员均超过60分钟、未被进程打开时,删除该base的全部残留;
- 新录制、仍被进程打开或未满60分钟的文件不会被完整性对账误删;
- 已确认上传的正常清理在删除前会再次要求raw、annotated和XML三者齐全,缺一项整组跳过;
- scan 以一次扫描目录为原子单位;只有全部小图和`meta.json`的SFTP
上传均完成、Kafka消息确认成功,并写入
`/userdata/data/upload_processed_scans.log`后才允许清理;
- 已确认的scan还必须超过60分钟、`meta.json`状态为`completed`且目录内
没有文件被进程打开,随后才会整目录删除;
- 对`<base>_raw.mp4.partN.mp4`录制残留执行整组安全检查:
- 同一base的所有part都必须超过60分钟、全部为0字节且均未被进程打开;
- 如果正式`<base>_raw.mp4`已经存在,只删除符合条件的残留part,保留正常三件套;
- 如果正式raw不存在,删除全部残留part及对应的annotated视频和XML;
- 任一part仍较新、非0字节或正在使用时,整组跳过;
- 空闲低于3GiB时暂停整个 `smart_camera` 进程(持续检测、录像和识别一起暂停),Producer继续上传,并输出 CRITICAL 告警;
- 暂停期间每2分钟检查一次;
- 清理使空闲恢复到5GiB后自动恢复 `smart_camera`;程序重新持续检测,达到鸟类确认门控后再录像和识别,并停止2分钟快速检查;
- 空闲低于3GiB时只创建“禁止录像”标记,立即结束正在生成的录像,并停止产生新的
`videos`、`videos_raw`、`annotations`;持续检测、推理、RTSP/公网直播、scan和
Producer上传均不暂停;
- 禁止录像期间每2分钟检查一次;
- 清理使空闲恢复到5GiB后删除标记并自动允许录像;持续检测一直运行,之后达到
15/25鸟类确认门控即可重新产生三件套,并停止2分钟快速检查;
- 从旧版本升级时,如果发现旧的 `capture-paused` 状态,程序会先向
`smart_camera` 发送一次 `SIGCONT` 并删除旧状态,之后不再使用
`SIGSTOP/SIGCONT` 控制整个进程;
- 无法读取成功记录时不删除数据。
## 验证
@@ -112,6 +130,8 @@ journalctl -u cleanup-smartcam-data.service -n 100 --no-pager
```bash
docker exec smart-cam \
test -r /smart-cam/kafka_sender/processed_files.log
test -r /userdata/data/upload_processed_scans.log
```
确认 Docker 未重启:
@@ -153,8 +173,8 @@ cd /home/zhangw/cleanup-smartcam-data
sudo ./scripts/uninstall.sh
```
卸载后检查采集是否处于暂停状态,再决定是否删除:
卸载不会自动删除当前的录像禁止标记;如需立即恢复录像,请确认空间充足后删除:
```text
/var/lib/cleanup-smartcam-data/
/userdata/data/.recording-paused-low-disk
```