我正在尝试将文件从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 patchlevel 330)[i386-mingw32]
net-sftp(2.1.1)
Unix框: SunOS
更新:您似乎必须在TO文件路径中指定文件名,以便C:\Users\MyUser\Desktop
成为C:\Users\MyUser\Desktop\fileNameIWant.ext
答案 0 :(得分:0)
看起来运行ruby脚本的用户没有写入硬盘的权限。也许MyUser
不是正在执行脚本的用户。
编辑:
忘了提,你可以尝试逃避窗口反斜杠。尝试:
C:\\Users\\MyUser\\Desktop
作为本地路径
答案 1 :(得分:0)
你可以做的一件事就是避免疯狂,就是在使用Ruby时停止在Windows文件名中使用反斜杠。根据{{3}}:
如果可能,Ruby将在不同的操作系统约定之间转换路径名。例如,在Windows系统上,文件名为" /gumby/ruby/test.rb"将作为" \ gumby \ ruby \ test.rb"打开。 [...]
答案 2 :(得分:0)
您似乎必须在TO文件路径中指定文件名,以便C:\Users\MyUser\Desktop
成为C:\Users\MyUser\Desktop\fileNameIWant.ext
在我只指定路径而不指定文件名之前。