0

我正在尝试将文件从 Unix 机器复制到本地桌面,但出现错误:Errno::EACCES: Permission denied - C:\Users\MyUser\Desktop

require 'net/sftp'
Net::SFTP.start(unixBox, user, :password => password) do |sftp|
  sftp.download!(filePathOnUnixBox, 'C:\Users\MyUser\Desktop')
end

我的桌面:Windows 7

ruby 1.8.7 (2010-12-23 补丁级别 330) [i386-mingw32]

网络 sftp (2.1.1)

Unix盒子: SunOS

更新:看起来你必须在你的 TO 文件路径中指定文件名,所以C:\Users\MyUser\Desktop变成C:\Users\MyUser\Desktop\fileNameIWant.ext

4

3 回答 3

0

看起来运行 ruby​​ 脚本的用户没有写入硬盘的权限。也许MyUser不是执行脚本的用户。

编辑:

忘了提一下,你可以尝试避开 windows 的反斜杠。尝试:

C:\\Users\\MyUser\\Desktop

作为本地路径

于 2013-04-29T13:33:58.273 回答
0

您可以做的一件事来避免疯狂,那就是在使用 Ruby 时停止在 Windows 文件名中使用反斜杠。根据IO 文档

如果可能,Ruby 将在不同的操作系统约定之间转换路径名。例如,在 Windows 系统上,文件名“/gumby/ruby/test.rb”将打开为“\gumby\ruby\test.rb”。[...]

于 2013-04-29T14:43:33.477 回答
0

看起来你必须在你的 TO 文件路径中指定文件名,所以C:\Users\MyUser\Desktop变成C:\Users\MyUser\Desktop\fileNameIWant.ext

在我只指定路径而不是文件名之前。

于 2013-05-01T13:40:30.333 回答