0

我正在尝试使用 Windows 共享来复制文件。它在 Windows 中工作正常,因为当我使用它 linux 时它会出错。

remote_file 'download' do 
source 'file:////server/repo/client.zip' 
path "/etc/chef/client.zip" 
end

错误日志

Errno::ENOENT ------------- 没有这样的文件或目录 @ rb_sysopen - /server/repo/client.zip

Resource Declaration: --------------------- 
# In 52: remote_file 'download' do 
53: source 'file:////server/repo/client.zip' 
54: path "/etc/chef/client.zip" 
56: end 
57: #end

4

2 回答 2

1

这在 UNC 路径上完全有效的事实有点偶然(尽管以免有人误以为它不会被删除 AFAIK)。Linux 没有类似的模式。您可以使用execute资源并cp涵盖基本用例。

execute 'cp /from /to' do
  creates '/to'
end
于 2015-11-25T15:55:40.387 回答
0

你能试一下吗:

remote_file 'download' do 
  source '\\server\repo\client.zip' 
  path "/etc/chef/client.zip" 
end

remote_file 资源通过Chef::Provider::RemoteFile::NetworkFile该类支持 Windows 网络路径(如果有人想在源中挖掘更多信息)。

remote_file 下的调度程序键关闭前导双反击'\\',因此这些字符必须是反击而不是正斜杠。另请注意,我使用的是单引号而不是双引号 - 如果使用双引号(用于插值或仅用于样式),则需要自行转义回击,它变为source "\\\\server\\repo\\client.zip". 我相当肯定 ruby​​ 本身会容忍将其余的回击更改为正斜杠(所以source '\\server/repo/client.zip'可能是合法的?),但这看起来很尴尬。

此功能首先在https://github.com/chef/chef/pull/3336的 12.4.0 中发布

于 2015-11-26T22:03:51.463 回答