针对GNU/Linux synology_apollolake_418play下的删除数据脚本

devtools/2024/10/17 23:54:02/

1、目的

        一个在 Linux 下的 Bash 脚本,用于每三年删除 /volume1 目录下的文件以及子文件夹下的文件。这个脚本假设你已经有了判断时间间隔是否为三年的方法(比如上述提到的通过记录上一次执行时间并进行比较的方法)。

2、操作

1)假设存在一个脚本文件名为 delete_every_three_years.sh

#!/bin/bash# 目标目录,即要删除文件的目录
target_directory="/volume1"# 获取当前日期,格式为YYYY-MM-DD
current_date=$(date +%Y-%m-%d)# 尝试读取记录上一次执行日期的文件内容
last_execution_date=$(cat /path/to/last_execution_date.txt)# 分别提取当前日期的年、月、日
current_year=$(date +%Y)
current_month=$(date +%m)
current_day=$(date +%d)# 如果记录文件存在,提取记录日期的年、月、日
if [ -n "$last_execution_date" ]; thenlast_execution_year=$(echo $last_execution_date | cut -d '-' -f1)last_execution_month=$(echo $last_execution_date | cut -d '-' -f2)last_execution_day=$(echo $last_execution_date | cut -d '-' -f3)
else# 如果记录文件不存在,初始化记录日期为当前日期减三年last_execution_year=$(date -d "3 years ago" +%Y)last_execution_month=$(date -d "3 years ago" +%m)last_execution_day=$(date -d "3 years ago" +%d)echo "$last_execution_year-$last_execution_month-$last_execution_day" > /path/to/last_execution_date.txt
fi# 计算当前日期与记录日期的年、月、日差值
year_diff=$(expr $current_year - $last_execution_year)
month_diff=$(expr $current_month - $last_execution_month)
day_diff=$(expr $current_day - $last_execution_day)# 判断是否满足三年的时间间隔条件
if [ $year_diff -gt 2 ] || [ $year_diff -eq 2 -a $month_diff -gt 0 ] || [ $year_diff -eq 2 -a $month_diff -eq 0 -a $day_diff -ge 0 ] || [ $year_diff -eq 3 ]; then# 如果满足条件,输出提示信息并执行删除操作echo "Deleting files in $target_directory as it has been at least three years."find $target_directory -type f -deletefind $target_directory -type d -empty -delete# 更新记录文件为当前日期echo $current_date > /path/to/last_execution_date.txt
else# 如果不满足条件,输出提示信息并跳过删除操作echo "Not yet three years since last execution. Skipping deletion."
fi

2)请确保赋予这个脚本可执行权限:

chmod +x delete_every_three_years.sh

3)然后设置一个 cron 任务每天运行这个脚本:

0 0 * * * /path/to/delete_every_three_years.sh

2、完工


http://www.ppmy.cn/devtools/119587.html

相关文章

Python从入门到高手4.1节-掌握条件控制语句

目录 4.1.1 理解条件控制 4.1.2 if, elif, else 4.1.3 条件表达式 4.1.4 条件控制可以嵌套 4.1.5 if语句的三元运算 4.1.6 国庆节快乐 4.1.1 理解条件控制 在日常生活中,我们常喜欢说如果, "如果怎么样,那么就会怎么样"。"如果&qu…

基于单片机的催眠电路控制系统

** 文章目录 前言一 概要功能设计设计思路 软件设计效果图 程序文章目录 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主…

如何给一张图像判断失真类型?

判断失真类型 类型 类型 模糊失真: 表现:图像细节不清晰,边缘模糊,整体看起来像是被一层薄雾笼罩。 原因:可能是由对焦不准确、相机抖动、快门速度过慢或景深过浅等原因造成。 判断方法:观察图像中的细节是…

小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态

随着信息技术的飞速发展,企业在处理海量数据时所面临的挑战日益严峻。特别是在年轻娱乐领域,用户行为的多样性和数据量的激增对数据存储与分析技术提出了更高的要求。在此背景下,小川凭借其前瞻性的技术视野,选择了MongoDB作为其数…

互斥量mutex、锁、条件变量和信号量相关原语(函数)----很全

线程相关知识可以看这里: 线程控制原语(函数)的介绍-CSDN博客 进程组、会话、守护进程和线程的概念-CSDN博客 1.同步概念 所谓同步,即同时起步,协调一致。不同的对象,对“同步”的理解方式略有不同。如,设备同步,是…

(23)mysql中mysqldump备份数据库

mysql中mysqldump备份数据库: 1.mysqldump -uroot -p123456 --databases test > test.sql ## 将输出写入test.sql文件 " -u  用户名 -p  密码 -h  hostname 信息 -d(--no-data)  只导出表结构 -A(--all-databases&#xf…

栈(模板)、队列(模板)(9.27)

栈 #include <iostream> #include<vector> using namespace std; template<typename T> class my_stack { private:vector<T> *data;public:my_stack() :data(new vector<T>()){}~my_stack(){delete data;};bool empty();//入栈void push(int …

Python设计模式速通

目录 先导 对象的事情 类的事情 方法 面对对象程序设计的几个基本要点 封装 多态 继承 抽象 组合 面对对象程序设计的准则 开放/封闭原则 控制反转原则 接口隔离原则 单一职责原则 替换原则规定 三大模式 创建型模式 结构型模式 行为型模式 先导 我们开始设…