侧边栏壁纸
博主头像
天马行空 博主等级

凡是过往,皆为序章

  • 累计撰写 632 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

使用群晖定时任务删除备份文件

sortie
2026-04-25 / 0 评论 / 0 点赞 / 4 阅读 / 0 字

在群晖(Synology NAS)上,可以通过系统自带的**“任务计划” (Task Scheduler)** 配合一段简单的 Shell 脚本来实现定时清理文件夹,仅保留最新备份的2 个文件。这个场景非常适合用于自动清理旧的备份文件或录像。

第一步:准备清理脚本

这段脚本的逻辑是:进入指定文件夹,按时间顺序排列所有文件(最新的在最前),跳过前 2 个文件,然后删除剩下的所有文件。

#!/bin/bash

# 1. 设定你要清理的目标文件夹路径(请务必修改为你的实际路径!)
TARGET_DIR="/volume1/your_share_folder/backup"

# 2. 进入该目录,如果目录不存在则直接退出,防止误删其他地方的文件
cd "$TARGET_DIR" || exit

# 3. 找出除最新2个文件外的其他文件并删除
# ls -tp: 按修改时间降序排列,并在文件夹后加上 '/'
# grep -v '/$': 过滤掉文件夹,只处理纯文件
# tail -n +3: 从第 3 行开始输出(也就是跳过前 2 个最新的文件)
# while read... : 逐行读取文件名并强制删除
ls -tp | grep -v '/$' | tail -n +3 | while read -r file; do
    rm -f "$file"
done

💡 提示:如何获取真实的文件路径?

打开群晖的 File Station,找到你要清理的文件夹,右键点击选择 属性,在“位置”一栏中看到的路径(例如 /volume1/docker/backups)就是你需要填入脚本中的 TARGET_DIR

第二步:在群晖中设置定时任务

  1. 登录群晖 DSM 后台。

  2. 打开 控制面板 (Control Panel) -> 任务计划 (Task Scheduler)

  3. 点击左上角的 新增 (Create) -> 计划的任务 (Scheduled Task) -> 用户定义的脚本 (User-defined script)

1. 常规 (General) 选项卡

  • 任务名称: 随便填,例如 清理旧备份

  • 用户账号: 建议选择 root(确保有足够的权限删除文件)。如果你非常确定某个普通用户有完全的读写删除权限,也可以选那个用户。

  • 已启用: 保持勾选。

2. 计划 (Schedule) 选项卡

  • 根据你的需求设置运行频率。例如:选择 每天 (Daily),时间设置为凌晨 02:00

3. 任务设置 (Task Settings) 选项卡

  • (可选)在“通过电子邮件发送运行详情”中填入你的邮箱,以便脚本执行失败时通知你。

  • 在底部的 用户定义的脚本 (Run command) 文本框中,粘贴你修改好路径的上述脚本

点击 确定 (OK) 保存任务。系统可能会弹出一个警告,提示运行 root 脚本的风险,确认即可。

第三步:测试脚本(非常重要!)

在让它自动运行之前,强烈建议先手动测试一次,防止路径填错导致误删重要文件。

  1. 在“任务计划”列表中找到你刚创建的任务。

  2. 选中它,点击上方的 运行 (Run)

  3. 检查目标文件夹,看看是否只剩下了最新的 2 个文件。

安全建议: 在初次测试时,你可以先将脚本中的 rm -f "$file" 替换为 echo "准备删除: $file"。运行后,在任务计划的“设置 -> 查看结果”中检查输出日志,确认它要删除的文件名是否正确。确认无误后,再改回 rm -f 命令。

博主关闭了所有页面的评论