Пытаюсь скачать Net::SFTP, но получаю Errno::EACCES: В доступе отказано - каталог, в который я копирую

Я пытаюсь скопировать файл из коробки 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]

net-sftp (2.1.1)

Unix box: SunOS

ОБНОВЛЕНИЕ: Похоже, вы должны указать имя файла в пути к файлу TO, C:\Users\MyUser\Desktop становится C:\Users\MyUser\Desktop\fileNameIWant.ext

3 ответа

Решение

Похоже, вы должны указать имя файла в пути к файлу TO, C:\Users\MyUser\Desktop становится C:\Users\MyUser\Desktop\fileNameIWant.ext

Раньше я только указывал путь, но не имя файла.

Единственное, что вы можете сделать, чтобы избежать сумасшествия, это прекратить использовать обратную косую черту в именах файлов Windows при использовании Ruby. Согласно документации IO:

Ruby преобразует имена путей между различными соглашениями операционной системы, если это возможно. Например, в системе Windows имя файла "/gumby/ruby/test.rb" будет открыто как "\gumby\ruby ​​\test.rb". [...]

Похоже, что пользователь, который запускает скрипт ruby, не имеет разрешения на запись на ваш жесткий диск. Может быть MyUser это не тот пользователь, который выполняет скрипт.

РЕДАКТИРОВАТЬ:

Забыл упомянуть, вы могли бы попытаться избежать обратной косой черты окна. Пытаться:

C:\\Users\\MyUser\\Desktop

как местный путь

Другие вопросы по тегам