为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以对文件夹应用计数功能,然后在文件夹超过限制时删除文件?

是否可以对文件夹应用计数功能,然后在文件夹超过限制时删除文件?

烙印99 2021-04-12 09:23:23
我正在尝试编写一个脚本,当目录超过特定限制时,该脚本可以从目录中删除旧文件。这是我的剧本#!/bin/bash#incremental backup of upload folder onlyLIMIT=2TIME=`date +%b-%d-%y%s`FILENAME=backup-$TIME.tgzSRCDIR=/home/Man/blablaDESDIR=/home/Man/newdirEXCFILE=/home/Man/blabla/upif [ $LIMIT -gt 2 ]; then cd $DESDIRls -lt | grep .tgz | tail -n 1 | xargs -r rmtar -cvzf $DESDIR/$FILENAME $SRCDIR --exclude=$EXCFILE elsetar -cvzf $DESDIR/$FILENAME $SRCDIR --exclude=$EXCFILE fi但它无法正常工作,它会创建备份,但在dir超出限制后不会删除旧文件
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

您的问题尚不清楚(我们只能猜测“极限”是什么意思,但我们不明白这是什么),并且缺乏动力。

在系统调用级别(请参阅syscalls(2)),将相关的系统调用依次为setrlimit(2)和signal(7)相关的调用(例如sigaction(2))。RLIMIT_FSIZESIGXFSZ

因此,您可以使用ulimit内置函数和trap一个内置函数。但是,由Shell脚本执行的程序可能会更改文件大小限制,并可能捕获SIGXFSZ信号。

注意,目录的大小(由stat(2)给出,因此stat(1)和ls(1))不是其文件的累积大小(因为某些文件可以在多个目录中进行硬链接;索引节点-参见inode(7))。它只是目录条目的大小。

或者,您可以计算文件的累积大小(使用du(1)或find(1)或gawk(1)),然后根据该文件采取一些措施,也许删除一些大文件(但可以考虑-也许通过决定忽略它们) -在脚本执行期间写入文件或目录的其他进程)。

也许您可能对磁盘配额感兴趣(请参阅quotactl(2),quota(1),quotacheck(8)))

您可以进行增量备份。为此,您可以使用tar(1)以外的其他实用程序(例如dar,afio,...)。注意,mv(1)&cp(1)&tar有一些--backup选择。也许您可能考虑使用logrotate(8)处理不断增长的日志文件。


查看完整回答
反对 回复 2021-04-16
  • 2 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信