如何检查是否存在多个文件实例并将其删除

如何检查是否存在多个文件实例并将其删除

我编写了一个非常简单的脚本来每天备份我的文件和数据库。这是我的脚本:

mongodump --db DB
name=$( date +%F_%H_%M_%S )
tar zvcf /backup/$name-DB-db.tar.gz dump/
rm -rf dump
name=$( date +%F_%H_%M_%S )
tar zvcf /backup/$name-FILES-files.tar.gz /home/NAME/

tar.gz每天生成两个文件,一周后将生成 14 个 tar.gz 文件。

我想要的是,假设以下输出ls -lh

2021-06-19_16_02_00-FILES-db.tar.gz
2021-06-19_17_02_00-FILES-db.tar.gz
2021-06-19_16_02_00-FILES-files.tar.gz
2021-06-19_17_02_00-FILES-files.tar.gz
2021-06-19_16_02_05-DB-db.tar.gz
2021-06-19_17_02_05-DB-db.tar.gz
2021-06-19_16_02_08-DB-files.tar.gz
2021-06-19_17_02_08-DB-files.tar.gz

我想要的是:

Check if more than file {*FILES-db.tar.gz} exists, then remove the old ones and keep the last one. Else, skip.
Check if more than file {*DB-db.tar.gz} exists, then remove the old ones and keep the last one. Else, skip.

之后的结果ls -lh应该是这样的:

2021-06-19_17_02_00-FILES-db.tar.gz
2021-06-19_17_02_00-FILES-files.tar.gz
2021-06-19_17_02_05-DB-db.tar.gz
2021-06-19_17_02_08-DB-files.tar.gz

我应该在 bash 脚本中使用什么函数或命令?

我认为最好在备份完成后在 bash 脚本的末尾使用这个函数,但如果有更好的方法和解决方案,我很想听到。

更新1

/etc/logrotate.d/NAME-files:

/backup/*NAME-files.tar.gz {
        daily
        missingok
        rotate 1
        notifempty
}

相关内容