清理过期的旧文件

我们每隔一段时间就会打扫一次房间。 Puppet 的 tidy 资源可以帮助你清理已过期的旧文件,从而减少不必要的磁盘占用。 例如,如果你像 生成报告 一节描述的那样启用了 Puppet 的报告, 就会希望定期清除旧的报告文件。

操作步骤

  1. 添加如下代码到你的配置清单:

    tidy { "/var/lib/puppet/reports":
        age     => "1w",
        recurse => true,
    }
    
  2. 运行 Puppet:

    # puppet agent -–test
    info: Retrieving plugin info: Caching catalog for cookbook.
    bitfieldconsulting.com
    
    notice: /Stage[main]//Node[cookbook]/Tidy[/var/lib/puppet/
    reports]: Tidying File[/var/lib/puppet/reports/cookbook.
    bitfieldconsulting.com/201102241546.yaml]
    
    notice: /Stage[main]//Node[cookbook]/Tidy[/var/lib/puppet/
    reports]: Tidying File[/var/lib/puppet/reports/cookbook.
    bitfieldconsulting.com/20110214727.yaml]
    
    ...
    
    info: Applying configuration version '1306149187'
    
    notice: /File[/var/lib/puppet/reports/cookbook.bitfieldconsulting.
    com/201102241546.yaml]/ensure: removed
    
    notice: /File[/var/lib/puppet/reports/cookbook.bitfieldconsulting.
    com/201102141727.yaml]/ensure: removed …
    
    notice: Finished catalog run in 1.48 seconds
    

工作原理

Puppet 会搜索指定路径下所有匹配 age 参数的文件:本例中的存活时间为 1w(一周)。 也可以搜索子目录(recurse => true)。

任何与你指定的标准匹配的文件都会被删除。

更多用法

你可以指定文件存活时间的单位,单位可以是:秒(s)、小时(h)、天(d)和周(w),下面是几个例子:

  • 60s

  • 180m

  • 24h

  • 30d

  • 4w

你也可以指定文件的大小,当文件的尺寸大于你指定的尺寸后就会删除它,例如:

  size => "100m",

这会删除所有大于 100 megabytes(m) 的文件。单位也可以是:kilobytes(k)或 bytes(b)。

注记

值得注意的是,如果你同时指定了 age 和 size 参数,它们将被视为独立的标准 (即参数之间是 “或” 逻辑而不是 “与” 逻辑)。 例如,你对一个目录的文件指定了如下的参数,那么 Puppet 会删除所有超过一天的文件, 同时也会删除所有尺寸大于 512KB 的文件。

  age => "1d",
  size => "512k",