【ubuntu下小工具】Crontab定时任务进行数据备份和清理

背景

在生产环境的深度学习项目中,系统每日会持续生成大量数据。如果不进行有效管理,随着时间的推移,磁盘空间将被占满,最终导致服务器瘫痪。 为解决这一问题,需设置一个定时任务去执行脚本,用以完成:

  1. 按日归档数据:将每日生成的数据存入以日期命名的独立文件夹中。
  2. 定期清理历史数据:仅保留最近 n 天的数据文件夹,自动删除更早的历史数据,确保磁盘空间合理利用。

该方案通过定时任务实现,既能保证数据的阶段性存储,又能避免因磁盘写满引发的服务中断。

1. 执行文件的编写

  1. DATASET文件夹,移动到DATASET_BACKUP路径下,并重新创建 DATASET文件夹,用以后续的数据存放。
  2. DATASET_BACKUP 路径下的归档数据,保留最近 n 个数据文件夹,其余均删除。
    在这里插入图片描述
#!/bin/bash# 配置部分SOURCE_DIR="/home/ll/crontab_task/testdata/DATASET"         # 需要归档数据
BACKUP_DIR="/home/ll/crontab_task/testdata/DATASET_BACKUP"  # 归档路劲
LOGS_DIR="/home/ll/crontab_task/testdata/image_backup.log"  # 归档日志DEFAULT_KEEP_COUNT=5  # 默认保留最近的5个备份# 检查源目录
if [ ! -d "$SOURCE_DIR" ]; thenecho "$(date '+%Y-%m-%d %H:%M:%S') - 源目录 $SOURCE_DIR 不存在,跳过备份" >> $LOGS_DIRexit 0
fi# 从SOURCE_DIR提取最后一级目录名
BASE_NAME=$(basename "$SOURCE_DIR")# 获取原始权限信息
ORIG_OWNER=$(stat -c "%U:%G" "$SOURCE_DIR")
ORIG_PERM=$(stat -c "%a" "$SOURCE_DIR")# mv操作
DATETIME=$(date +"%Y%m%d_%H%M")
mkdir -p "$BACKUP_DIR"
mv "$SOURCE_DIR" "${BACKUP_DIR}/${BASE_NAME}_${DATETIME}" || {echo "$(date '+%Y-%m-%d %H:%M:%S') - 备份失败!目录可能被锁定或磁盘已满" >> "$LOGS_DIR"exit 1
}# 重建目录并恢复权限
mkdir -p "$SOURCE_DIR"
chown "$ORIG_OWNER" "$SOURCE_DIR"
chmod "$ORIG_PERM" "$SOURCE_DIR"
echo "$(date '+%Y-%m-%d %H:%M:%S') - 已重建目录并恢复权限: $ORIG_OWNER $ORIG_PERM" >> "$LOGS_DIR"# 删除旧备份(保留最近的KEEP_COUNT个)
KEEP_COUNT=${1:-$DEFAULT_KEEP_COUNT}
BACKUP_FILES=($(ls -dt "${BACKUP_DIR}/${BASE_NAME}_"* 2>/dev/null))
TOTAL_COUNT=${#BACKUP_FILES[@]}if [ $TOTAL_COUNT -gt $KEEP_COUNT ]; thenfor (( i=KEEP_COUNT; i<TOTAL_COUNT; i++ )); dorm -rf "${BACKUP_FILES[$i]}"doneecho "$(date '+%Y-%m-%d %H:%M:%S') - 保留最近 ${KEEP_COUNT} 个备份,删除 $((TOTAL_COUNT - KEEP_COUNT)) 个旧备份" >> "$LOGS_DIR"
fi

OK,脚本实现了后。我们需要设置和开启定时任务。

2 Crontab 定时任务的设置

  1. 打开终端运行
    crontab -e
    
  2. 然后添加内容
    * * * * * /home/ll/crontab_task/images_data_backup.sh   # 每分钟备份一次
    # 0 2 * * * /home/ll/crontab_task/images_data_backup.sh   # 每天2点0分执行sh文件
    
  3. 查看当前用户的定时任务
    crontab -l
    

以上设置,定时任务已经设置成功,并在指定时间执行。

3 Crontab 详细介绍

这里做个记录,方便自己快速查阅。如果有更多的需求和疑问,直接deepseek一下,会得到更为详细的答案。

crontabCron Table)是 Linux/Unix 系统中的一个 定时任务管理工具,允许用户按预定义的时间周期自动执行命令或脚本。它由 cron 守护进程(crond)驱动,广泛用于自动化运维、日志清理、数据备份等场景。


2.1 Crontab 基本结构

一个 crontab 条目由 时间表达式 + 要执行的命令 组成,格式如下:

* * * * * <command-to-execute>
│ │ │ │ │
│ │ │ │ └─── 星期几 (0-7, 0和7都代表周日)
│ │ │ └───── 月份 (1-12)
│ │ └─────── 日期 (1-31)
│ └───────── 小时 (0-23)
└─────────── 分钟 (0-59)

示例:

*/5 * * * * /path/to/script.sh  # 每5分钟执行一次脚本
30 3 * * * /backup.sh          # 每天凌晨3:30执行备份
0 0 1 * * /clean-logs.sh       # 每月1日0:00清理日志

2.2 Crontab 时间表达式详解

  • (1)基本时间字段

    字段取值范围说明
    分钟0-59每小时的第几分钟执行
    小时0-23每天的第几小时执行
    日期1-31每月的第几天执行
    月份1-12每年的第几月执行
    星期0-7每周的第几天执行(0和7=周日)
  • (2)特殊符号

    符号示例说明
    ** * * * *匹配所有可能值(每分钟执行)
    ,0,15,30 * * * *指定多个时间点(每小时的0,15,30分执行)
    -0 9-18 * * *时间范围(每天9点到18点整点执行)
    */n*/5 * * * *每隔n单位执行一次(每5分钟执行)
  • (3)常见示例

    表达式说明
    0 * * * *每小时的第0分钟(整点)执行
    */10 * * * *每10分钟执行一次
    0 2 * * *每天凌晨2点执行
    0 0 * * 0每周日0点执行
    0 0 1 * *每月1日0点执行

3. Crontab 基本操作

  1. 查看当前用户的定时任务

    crontab -l
    
  2. 编辑定时任务

    crontab -e  # 使用默认编辑器(如vi)修改
    
  3. 删除所有定时任务

    crontab -r
    
  4. 指定用户管理(需root权限)

    crontab -u username -e  # 编辑其他用户的crontab
    

4. Crontab 注意事项

在设置定时任务时候,无论脚本还是Crontab 中的执行脚本,都需要是绝对路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86256.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3dgs涉及的基本概念:球谐系数(SH 系数)等

1.球谐系数&#xff08;SH 系数&#xff09; ──────────────────────────────────────── 1.1 什么是球谐函数 (Spherical Harmonics&#xff0c;缩写为 SH) 球谐函数是一组定义在单位球面上的一组正交函数&#xff0c;类似于在二维平…

sql格式化自动识别SQL语法结构

一、安装包 PoorMansTSqlFormatterLib 二、代码实现 using Microsoft.AspNetCore.Mvc; using PoorMansTSqlFormatterLib.Formatters; using PoorMansTSqlFormatterLib.Parsers; using PoorMansTSqlFormatterLib.Tokenizers;namespace SaaS.OfficialWebSite.Web.Controllers …

LVS-DR负载均衡群集深度实践:高性能架构设计与排障指南

目录 一、核心原理与理论 二、背景与架构设计 三、全流程部署步骤 1. NFS共享存储配置&#xff08;192.168.7.100&#xff09; 2. Real Server节点配置&#xff08;四台服务器&#xff09; 3. Director服务器配置 四、常见问题解决方案 五、生产环境总结 拓扑示意图&am…

Hall 定理学习笔记

定义 对于一张二分图 G ( V , E ) G(V,E) G(V,E)&#xff0c;设其左右部点集分别为 V L , V R V_L,V_R VL​,VR​&#xff0c;不妨认为 ( ∣ V L ∣ ≤ ∣ V R ∣ ) (|V_L|\leq |V_R|) (∣VL​∣≤∣VR​∣)&#xff0c;定义该二分图的一组 完备匹配 为左部 ∣ V L ∣ |V…

使用jmeter进行websocket连接测试

一、WebSocket Sampler 插件安装 下载地址&#xff1a;http://download.csdn.net/detail/easternunbeaten/9753723 下载后&#xff0c;解压直接拷贝到Jmeter的lib下的ext文件夹里面,重启Jmeter&#xff0c;Sanpler下多一个Websocket选项 二、WebSocket 取样器字段介绍 1、W…

网络安全漏洞扫描是什么?如何识别目标进行扫描?

&#xff0c;现在大家对于网络安全漏洞扫描那可是相当在意这网络安全&#xff0c;如今在咱这个大时代里可是相当重要的一个事咧&#xff01;因为&#xff0c;随着互联网蹭蹭地发展&#xff0c;网络攻击还有数据泄露这类威胁那真是越来越多越来越大&#xff01; 咱先来说说啥叫…

NoSQL之Redis配置优化

NoSQL之Redis配置优化 一、Redis1.关系数据库与非关系型数据库关系型数据库非关系型数据库非关系型数据库产生背景 2.Redis基础Redis简介Redis安装部署配置参数 3.Redis命令工具redis-cli命令行工具redis-benchmark 测试工具 4.Redis数据库常用命令key相关命令(1)keys&#xff…

《HTTP权威指南》 第14章 安全HTTP

安全HTTP需要提供的功能&#xff1a; 服务器认证客户端认证完整性加密效率普适性管理的可扩展性适应性在社会上的可行性 HTTPS HTTPS方案的URL以https://开头&#xff0c;区别于https://。 HTTPS在HTTP的基础上使用SSL或者TLS&#xff08;传输层安全&#xff09;进行加密。 …

Kubernetes、Docker Swarm 与 Nomad 容器编排方案深度对比与选型指导

Kubernetes、Docker Swarm 与 Nomad 容器编排方案深度对比与选型指导 在微服务和云原生时代&#xff0c;容器编排已成为保证应用可用性与扩展性的核心技术。本文将从问题背景出发&#xff0c;深入对比 Kubernetes、Docker Swarm 和 Nomad 三大主流编排方案&#xff0c;分析各自…

c++开源库项目框架汇总

Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL&#xff0c;测试网站在压力下工作的性能&#xff0c;最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁&#xff0c;源…

【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置、高效微调与评估 Qwen2.5-VL

【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置、高效微调与评估 Qwen2.5-VL 1. 引言2. 为什么从 WebUI 转向命令行&#xff1f;3. 准备工作&#xff08;回顾&#xff09;4. 核心&#xff1a;创建并理解训练配置文件4.1 选择并复制基础模板4.2 逐一解析与修改配置文件4.3…

3、NLP黄金九步法(问题定义-数据获取-数据探索)

&#x1f3af; 为什么要学习NLP流程&#xff1f; 想象一下&#xff0c;你要做一道菜&#x1f373;。如果没有清晰的步骤&#xff0c;随便把食材扔进锅里&#xff0c;结果会怎样&#xff1f;NLP项目也是如此&#xff01; 就像做菜有固定流程一样&#xff1a; 买菜 → 洗菜 → …

docker 安装DM8达梦数据库

搭建Docker 环境 查看docker 是否安装 yum list installed | grep docker如若未安装则安装docker 环境 yum -y install docker启动Docker systemctl start docker查看docker启动结果 systemctl status docker搭建达梦数据库 下载镜像 传送门 #导入镜像 docker load -i…

Chrome MCP Server:AI驱动浏览器自动化测试实战「喂饭教程」

Chrome MCP Server:AI驱动浏览器自动化测试实战 一、项目简介二、原理剖析1. 架构总览三、安装1. 环境准备2. 安装步骤2.1 下载 Chrome 扩展2.2 安装 mcp-chrome-bridge2.3 加载扩展2.4 启动 MCP Server2.5 配置 AI 客户端四、Chrome MCP Server API 参考五、用法实战1. 与 AI…

.NET多线程任务实现的几种方法及线程等待全面分析

文章目录 1. 引言2. .NET多线程编程基础2.1 线程概念回顾2.2 .NET线程模型概述 3. 多线程任务实现方法3.1 Thread类实现3.2 ThreadPool实现3.3 Task Parallel Library (TPL)3.4 Parallel类3.5 BackgroundWorker组件3.6 Async/Await模式3.7 各种方法的比较与选择 4. 线程等待机制…

Typecho handsome访客统计插件最新版VistorLoggerPro

文章目录 介绍功能特点页面预览安装及更新方法系统要求使用说明基本使用&#xff08;Handsome主题适用&#xff09; 隐私保护技术实现更新日志最后 介绍 这是一个为 Typecho 博客系统开发的访客统计插件&#xff0c;基于原版的VistorLogger修改版本。该插件提供了详细的访问统…

蓝桥杯备赛篇(上) - 参加蓝桥杯所需要的基础能力 1(C++)

目录 一、&#xff08;工具&#xff09;DevC的安装和使用1.1 DevC介绍1.2 下载1.3 部分使用技巧1.3.1 快捷键介绍1.3.2 调试快捷键 二、第一个C程序2.1 基础程序2.2 main函数2.3 字符串2.4 头文件2.5 cin和cout初识2.6 名字空间 三、注释四、题目练习3.1 输出第二个整数3.2 字符…

Bugku-CTF-web(适合初学者)

今天刷了一下 Bugku-CTF-web 的1-10题&#xff0c;比较简单&#xff0c;比较娱乐&#xff0c;基本上看看源代码就可以了&#xff0c;非常适合初学者。能够学习到base64编码&#xff0c;unicode编码&#xff0c;dirb web目录遍历&#xff0c;SourceLeakHacker 备份文件遍历&…

【实时Linux实战系列】基于实时Linux的音频处理应用开发

在实时系统中&#xff0c;音频处理应用&#xff08;如实时音频效果处理、语音通信等&#xff09;需要低延迟和高精度的时间控制。实时Linux通过优化内核调度和提供高效的I/O操作&#xff0c;能够满足音频处理对实时性的严格要求。掌握基于实时Linux的音频处理应用开发对于开发者…

Linux中信号的三种产生方式

在 Linux 中&#xff0c;信号&#xff08;Signal&#xff09;是一种进程间通信的机制&#xff0c;用于通知进程发生了某种事件。理解信号的来源对于开发可靠、健壮的程序至关重要。本文将介绍三种常见的信号产生方式&#xff0c;包括&#xff1a;kill 命令、键盘输入&#xff0…