【问题标题】:Delete all files in a directory using Chef使用 Chef 删除目录中的所有文件
【发布时间】:2014-06-03 02:16:02
【问题描述】:

尝试删除非空文件夹:

directory "C:\tempdirectory" do
 action :delete
end

...在我收到的 Chef 中:

Errno::ENOTEMPTY
Directory not empty

有没有快速删除目录中所有文件的方法?

或者允许我删除非空目录的参数或标志?

【问题讨论】:

  • 我假设您在标准目录资源块上使用简单的:delete 操作?
  • 是的,抱歉编辑添加代码

标签: chef-infra


【解决方案1】:

如果我没记错的话,设置 recursive true 属性将强制删除非空目录。

The docs for the directory LWRP 没有描述这种行为,但他们确实提供了这个用法示例:

directory "/tmp/something" do
  recursive true
  action :delete
end

文档已被修改为隐晦地说:

recursive
Ruby 类型:TrueClass、FalseClass

递归地创建或删除父目录。对于所有者、组和模式属性,此属性的值仅适用于叶目录。
默认值:false

他们仍然没有说“删除非空目录需要recursive true。如果没有此设置,尝试删除非空目录将失败并显示消息:Errno::ENOTEMPTY Directory not empty”。

【讨论】:

  • 谢谢,效果很好。在文档中没有看到任何关于它的注释。
  • 是的,里面根本没有提到。
【解决方案2】:

您必须添加recursive true 选项。此选项将删除所有目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2010-11-05
    • 2013-07-31
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多