我编写了一个非常简单的脚本来每天备份我的文件和数据库。这是我的脚本:
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
}