首页 > 其他分享 >一种实现文件定期删除方法

一种实现文件定期删除方法

时间:2022-10-14 17:15:19浏览次数:54  
标签:文件 stat ctime 删除 定期 时间 time

需求:

实现文件过期自动删除。

大致思路:

1、获取文件time

2、跟当前时间做比较

3、删除

知识点:

获取文件time方法?

linux可以通过stat方法查看文件的时间,但是会发现有三个时间

ctime=change time 最后一次访问时间 比如:cat touch

atime=access time 最近一次文件内容发生改变时间 比如:vim

mtime=modifiy time 文件状态修改时间,文件属性 比如: chmod chown ln

image

之后根据需求看想用哪个时间作为删除的时间就可以了。

这样实现看起来好像没什么问题,但是如果在获取到文件时间之后,用户修改了文件(文件时间发生了改变),该不该删除呢?

所以要保证获取文件时间到删除之前原子性操作!

加文件锁?文加锁是建议性锁,并不能影响用户操作和修改文件。X

之后考虑的是在获取文件time之前,先把文件操作权限抹去,这样在获取文件time到删除文件,用户没办法操作文件,看起来可行,试试看。如果文件没有过期或者删除失败的时候,我们还需要把文件权限恢复。

这时可以使用stat函数,将文件各种信息存下来

struct stat statbuf;
int ret = stat(path, &statbuf); //返回0表示成功

想要恢复权限:

int ret = chmod(path,0);

至此,已经可以满足需求。

补充:

在修改权限部分,使用chmod函数虽然会将文件权限恢复,但是会修改文件的ctime,那么有什么方法可以将文件的ctime也修改回去呢?

目前查看了一些资料,得出的结论是使用外部api接口函数,文件的ctime都会随之改变,继续探讨。。。

标签:文件,stat,ctime,删除,定期,时间,time
From: https://www.cnblogs.com/itsfei/p/16792241.html

相关文章

  • 修改linux系统的文件打开数量(too many open files)​
    修改linux系统的文件打开数量(toomanyopenfiles)​在linux平台上,所有资源都是以文件的方式进行管理的,其中socket连接更为典型。​高并发TCP/UDP连接时,最高的并发数量受到li......
  • 02 设备树的格式 DTS文件
    参考博客:https://www.cnblogs.com/zongzi10010/p/10793074.htmlDeviceTree详解_pwl999的博客-CSDN博客_devicetree1dtc命令dtc-hUsage:dtc[options]<inputf......
  • 数据库内置表的研究 & Mysql的文件操作
    数据库内置表的研究+通过命令写shell0x00SQLite内置表的研究SQLITE_MASTER表是一张SQLite数据库的伴生表,该表会自动创建,是用来存储数据库的元信息的,如:表(table),索引......
  • windows bat cmd 创建固定大小文件
    @echooffsetfilenum=1setfilesize=10485760settmppth="c:\tmp"setdespth="z:\test"rmdir%tmppth%/s/qmd%tmppth%md%despth%for/l%%iin(1,1,%file......
  • Jmeter数据驱动--CSV文件配置
    1.  2.  3. ......
  • bat 脚本 批量去除文件夹下文件名前缀
     delete_info.bat 其中str=0(即为文件想要去除的统一前缀@echooffSetlocalEnabledelayedexpansionset"str=0("for/f"delims="%%iin('dir/b*.*')......
  • linux储存大文件到FAT32
    FAT32的单个文件的最大大小为4G,超过4G的文件就必须要分割成几个小文件再拷贝进去。linux下提供了split命令来分割文件。splitd:后缀用00,01,02……如果不使用这个选项,就是......
  • linux解压文件和创建压缩文件
    约定:FileName表示文件名,不能是目录名name表示可以是文件名,也可以是目录名。DirName表示目录名。温馨提示:可以用vim预览压缩包里的东西,例如vim防止解压出一堆散的文件污......
  • 使用Python同时读取和写入同一个文件
    前言在平时想要使用python修改文件部分内容的时候,常用的做法是使用open函数(默认模式为read)打开一个文件,然后关闭文件,然后再使用write模式去写入更新的内容,最后关闭。这......
  • 记录下上传docx文件的方法
      代码@ApiOperation(value="下载模板接口")@GetMapping(value="downloadTemplate")publicvoiddownloadTemplate(HttpServletResponseresponse)throwsIOExce......