1

背景:我有大约。要通过 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 
4

0 回答 0