背景:我有大约。要通过 SFTP 传输的 20K 文件。
我怀疑如果我在单个会话中发送它们,那么会话可能会中途终止。
我尝试搜索超时,但我发现空闲会话超时。
所以我试图搜索是否有类似批量传输的东西,我可以批量传输500个文件。在每批之后,将开始一个新的会话。
我正在使用 Ruby 的Net::SFTP
库
我目前的代码是
Net::SFTP.start(host, username, :password => password, :port => port) do |sftp|
files.each do |file| # files is an array of filenames (with path)
puts "Transferring '#{file}' to #{host}.."
sftp.upload!(file, "/#{File.basename(file)}")
end
end
我试过什么?
如果存在一些批处理选项,我尝试在文档或某些博客中进行搜索。
如果没有这样的选择,那么我打算按如下方式处理
files.each_slice(500) do |batch|
Net::SFTP.start(host, username, :password => password, :port => port) do |sftp|
batch.each do |file| # files is an array of filenames (with path)
puts "Transferring '#{file}' to #{host}.."
sftp.upload!(file, "/#{File.basename(file)}")
end
end
end