在生产环境中,经常会有这样一种需求“保留N天内的备份数据”
传统的做法可能就是把下面的命令放进脚本中并让计划任务按期执行:
find /bak -mtime +7 -exec rm -rf {} \;
但是有这么一种情况,公司需要保留最新的3份备份文件,那么如何实现?这里可以使用ls -t命令进行排序,最新的文件会排在最前面,然后把3行以后的文件都给删除。
ls -t | awk 'NR>3{print "rm -rf " $0}' | xargs rm -rf
这里有个细节就是最好给脚本文件一个chattr -i的权限,让脚本不能被修改,防止删除文件的目录被修改导致不可挽回的错误
谢谢