我想将远程主机/root/files/*.log
中的所有文件复制到我当前的目录 - ./files1/
require 'rubygems'
require 'net/ssh'
require 'net/scp'
Net::SSH.start( scp_hostname, scp_username, :keys => scp_keys, :timeout => 360 ) do |ssh|
ssh.scp.download!( '/root/files/*.log', './files1/' )
ssh.exec!( .. )
ssh.exec!( .. )
end
我有一个例外:
caught exception SCP did not finish successfully (1): scp: /root/files/*.log: No such file or directory
但是当我复制特定文件
时它才有效ssh.scp.download!( '/root/files/myfile.log', './files1/' )
有人可以帮忙吗?
谢谢!
答案 0 :(得分:2)
我建议使用net sftp,因为它允许使用更优雅的globing目录。这里:
barNames = [
"name1", "name2", "name3", "name4", "name5",
"name6", "name7", "name8", "name9", "name10"
].slice(0,NoOfBars);
或使用ssh,您可以使用以下技巧:
require 'net/sftp'
Net::SFTP.start( scp_hostname, scp_username, :keys => scp_keys, :timeout => 360 ) do |sftp|
sftp.dir.glob("/remote/path", "*.log") do |file|
sftp.download!( "/remote/path/#{file.name}", "./files1/#{file.name}" )
end
end
答案 1 :(得分:0)
你也可以使用没有任何红宝石宝石。使用scp命令。
SCP的基本语法
scp source_file_name username@destination_host:destination_folder
或
scp username@remote:/file/to/send /where/to/put
修改更新
只需删除timeout
选项即可为您提供帮助!并使用:recursive => true
选项。
require 'rubygems'
require 'net/ssh'
require 'net/scp'
Net::SSH.start( scp_hostname, scp_username, :keys => scp_keys ) do |ssh|
ssh.scp.download!( '/root/files/*.log', './files1/', :recursive => true )
ssh.exec!( .. )
ssh.exec!( .. )
end
希望这对你有帮助!