Chef:如何在保留某些文件的同时递归删除所有文件

时间:2016-09-26 17:43:15

标签: chef chef-recipe

我有一个像这样的文件夹结构:

/app
    /uploads
        1.pdf
        2.pdf
        /2015
        /2016
        /2017
        ......
    /requirements
    /tests
    manage.py
    ......

我曾经以递归方式删除app字典。现在,我想在uploads中保留所有折叠和文件,例如。 /2015/2016/2016/oct.pdf。另外,请删除1.pdf2.pdf

# remove the code folder if exists
directory node['conf-cookbook']['app_dir'] do
   recursive true
   action :delete
   only_if { ::File.directory?("#{ PATH }") }
end

我如何构建守卫以实现我的目标?

1 个答案:

答案 0 :(得分:0)

这不是目录资源可以做的事情。 Guard子句控制整个资源是否激活或不激活,它们在融合期间不是行项目否决。您需要创建自定义资源,或者只使用execute "find #{node['conf-cookbook']['app_dir']} -somefilter -delete"这样的内容,而不必关心它不是幂等的。