2011-08-24 133 views
7

我试图用Ruby文件上传到我的SFTP,我可以ssh中,一切都很好,但我的脚本失败....这里是我的小脚本红宝石SFTP错误

require 'rubygems' 
require 'net/sftp' 

Net::SFTP.start('50.5.54.77', 'root', :password => 'PASSWORD') do |sftp| 
    # upload a file or directory to the remote host 
    sftp.upload!("/Users/tamer/sites/sandbox/move_me.txt", "/home") 
end 

但我不断收到此错误

ruby sftp.rb 
/Library/Ruby/Gems/1.8/gems/net-sftp-2.0.5/lib/net/sftp/operations/upload.rb:313:in `on_open': 
Net::SFTP::StatusException open /srv (4, "failure") (Net::SFTP::StatusException) 

任何想法我做错了

回答

14

我使用SFTP时认为,目标文件必须指定

Net::SFTP.start('50.5.54.77', 'root', :password => 'PASSWORD') do |sftp| 
    # upload a file or directory to the remote host 
    sftp.upload!("/Users/tamer/sites/sandbox/move_me.txt", "/home/move_me.txt") 
end 

在文档中,示例使用远程路径来存档,而不仅仅是目录。

http://net-ssh.github.com/sftp/v2/api/classes/Net/SFTP/Operations/Upload.html

1

看来,一个目录的上传首先尝试的mkdir是目标目录。

如果该目标目录已经存在,那么mkdir会按照原始示例中的示例进行失败。我仍然在寻找一种方法来使用内置的上传目录 - 同时,我的程序遍历本地目录,并单独上传每个文件。