小编Fei*_*ila的帖子

使用 logrotate 存储 7 个每日、4 个每周和 12 个每年的数据库备份

我一直在尝试使用 logrotate 来存储数据库备份:

  • 最近 7 天(每天)
  • 过去 4 周(每周)
  • 过去 12 个月(每月)

我已经完成了这样的 logrotate 脚本,但只完成了每日轮换。

我错过了什么或做错了什么?日期格式 *' weekly '* 字符串是否破坏了脚本?如果是这样,如何实现为每种类型的旋转文件设置一个独特的名称?例如使用'extension .week'

注意:我已经在每周和每月轮换中使用了 prerotate 和 postrotate 来创建一个虚拟文件来检查这些文件是否正在执行,但从未创建过这些文件。

注 2:文件 /backups/db.sql 已正确创建

#daily (son)
"/backups/db.sql" {
        daily
        rotate 7
    missingok
    copy
    compress
}

#weekly (father)
"/backups/db.sql" {
        weekly
        rotate 4
    missingok
    copy
    dateext
    dateformat _weekly_%Y-%m-%d.
    compress
    prerotate
        touch /backups/weekly_pre.txt
    endscript
    postrotate
        touch /backups/weekly_post.txt
    endscript
}

#monthly (grandfather)
"/backups/db.sql" {
        monthly
        rotate 12
    missingok
    copy
    dateformat _monthly_%Y-%m-%d.
    compress
    prerotate
        touch /backups/monthly_pre.txt …
Run Code Online (Sandbox Code Playgroud)

linux rhel backup logrotate

9
推荐指数
2
解决办法
1万
查看次数

删除名称为“更大”的 n 个文件以外的文件?

我想创建一个 shell 脚本来删除除最后 n 个文件之外的旧版本文件。换句话说,当我部署一个新版本时,只保留最后 n 个版本。

文件名具有以下格式:

appname_releasenumber_date.tar.gz
Run Code Online (Sandbox Code Playgroud)

也许有一个简单的解决方案可以做到这一点,但我不知道如何做到这一点。

我找到了这个解决方案,在 Linux 上以更简洁的方式删除文件,其中包含日期戳作为文件名的一部分,但我需要先生成一些文件以保持我想要的文件数量。

shell-script files

3
推荐指数
1
解决办法
552
查看次数

标签 统计

backup ×1

files ×1

linux ×1

logrotate ×1

rhel ×1

shell-script ×1