使用bash脚本删除旧备份

时间:2018-08-24 08:19:37

标签: linux bash shell scripting cron

我是bash脚本的新手,我试图编写一个脚本来删除服务器上早于x天数的备份文件。目前,我已将数字设置为7,但可能会改变。该脚本最终将使用crontab执行。它应该满足以下要求。

  • 删除早于x天的文件
  • 但是,始终应存在至少3个备份文件。因此,如果备份少于4个,则脚本不应删除它们。

我尝试使用下面的代码解决以上问题

#!/bin/bash
unset all_backups_count
unset old_backups_count 
unset increment_old_backups_count
all_backups_count="$(find -type f | wc -l)"
old_backups_count="$(find -mtime +7 -type f | wc -l)"
increment_old_backups_count=$((old_backups_count + 3))
if [ "$all_backups_count" -ge 3 ] && [ "$increment_old_backups_count" -le "$all_backups_count" ];then 
  echo "deleting ${old_backups_count} old backup files"; 
  find -mtime +7 -type f -delete; 
  echo "success"; 
fi

上面的脚本在一定程度上可以工作,但是,如果备份的天数超过x天数(在这种情况下为7天),它根本无法删除任何备份。最好的情况应该是;

  • 如果备份文件超过3天且所有文件都早于7天,则应删除最旧的备份文件,直到仅剩3个备份文件(最新的)为止。
  • 此外,我确定我的脚本需要大量重构

0 个答案:

没有答案