linux压缩过期文件,Linux 下Shell脚本删除过期文件

在写这个shell之前先说一下,stat命令的使用方法

一、关于时间戳

每一个文件都有3中时间(称为时间戳timestamps),对这3种时间,很多时候容易混淆不清,因此 这里要说明下:

Access time(atime):是指取用文件的时间,所谓取用,常见的操作有:使用编辑器查看文件内容,使用cat命令显示文件内容,使用cp命令把该文件(即来源文件)复制成其他文件,或者在这个文件上运用grep sed more less tail head 等命令,凡是读取而不修改文件的操作,均衡改变文件的Access time.

Modify time(mtime):是指修改文件内容的时间,只要文件内容有改动(如使用转向输出或转向附加的方式)或存盘的操作,就会改变文件的Modify time,平常我们使用ls –l查看文件时,显示的时间就是Modify time

Change time(ctime):是指文件属性或文件位置改动的时间,如使用chmod,chown,mv指令集使用ln做文件的硬是连接,就会改变文件的Change time.

Note:

如果修改文件(使用编辑器存盘或使用) >>转向操作),则Modify time和Change time

会同步更新成写入的时间,但Access time不变。

如果执行touch文件,则3中时间全部改变

使用ln –s做文件的软式连接,会改变文件的取用时间

使用ls –la查看一般文件,不会更改这三种时间,但如果这个文件时符号链接文件,则会改变取用的时间(Access time)

二、关于stat命令

Stat是获取关于文件的额外信息,获得两种信息:

1、 文件系统

2、 文件

基本用法:

取得文件系统属性

Stat –f /dev/sda1

-f :表示取用的是文件系统(分区)而不是文件

取得文件属性

Stat filename

Stat 基本语法格式:

Stat –c 格式代码 文件

格式代码:

针对文件(非全部列举)

%A:用文件权限代码来表示权限

%F:用八进制表示文件权限

%G:文件拥有者的组名

%g:文件拥有者的属组id(gid)

%i:inode编号

%n:文件名

%s:文件大小

%U:文件拥有者名称

%u:文件拥有者的id(uid)

%x: 取用时间

%y: 修改时间

%z: 属性改动时间

针对文件系统:

%a: 一般使用者可自由使用的区块数

%b: 全部的区块数

%c: 全部的文件节点数

%d: 可取用的文件节点数

%f: 可取用的区块数

详细可访问:http://lovelace.blog.51cto.com/1028430/1212623

以下是shell脚本:

#! /bin/bash

data_path="/opt/test5"    #此处定义数据文件的路径

expired_time=3         #此处定义文件的过期时间,如3天

function deletefiles(){

local currentDate=`date +%s`   #获取系统时间,所以时间格式为秒

echo "current date is: " $currentDate

for file in `find $1 -name "*.sh"`  #此处定义文件格式,避免误删,$1指的是下面deletefiles函 数的参数$data_path

do

local name=$file

local modifyDate=$(stat -c %Y $file)

local existTime=$[$currentDate-$modifyDate]   #对比时间,算出日志存在时间,距离最近一次修改

existTime=$[$existTime/86400]

if [ $existTime -gt $expired_time ];then

echo "File: " $name "Modify Date: " $modifyDate + "Exist time: " $existTime + "Delete: yes"

rm -rf $file

else

echo "File: " $name "Modify Date: " $modifyDate + "Exist time: " $existTime + "

Delete: no"

fi

done

}

deletefiles $data_path

4a7758a5968be0e3da7f367b0b5d07cd.png

我这个测试脚本的名字是test30.sh,也是放在/opt/test5下面,如下图:

0f61794cdfcc81875e8c4b9368128e16.png

然后执行脚本,sh test30.sh,结果如下:

7f7a7b4dffbaa7363da4fe3f9bbc3612.png

5c35c3c8280d75f5dac82918809d87aa.png

没有问题的话,我们可以使用计划任务对shell脚本进行控制;crontab -e

每个月的15日的0时0分执行/opt/test5/test30.sh这个脚本:

5f4a64509b43b1864a9eb34e2d8cf6d8.png

af10d2f7db831d1f4b0b76ae2bd94c59.png

本文参考了以下好文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值