Как выполнить передачу SFTP в пакетах?

#ruby-on-rails #ruby #sftp #net-sftp

#ruby-on-rails #ruby #sftp #net-sftp

Вопрос:

Контекст: у меня есть ок. 20K файлов, которые будут переданы через SFTP.
Я скептически отношусь к тому, что если я отправлю их за один сеанс, то сеанс может завершиться на полпути.
Я попытался найти тайм-аут, но обнаружил, что это тайм-аут для сеанса ожидания.

Итак, я пытался найти, есть ли что-то вроде передачи в пакетах, где я могу передавать 500 файлов в пакете. И после каждой партии начнется новая сессия.
Я использую Net::SFTP библиотеку Ruby

Мой текущий код

       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 
  

Комментарии:

1. Что вы пробовали до сих пор? Пожалуйста, поделитесь своим кодом. Вы просто настроены скептически или действительно увидели ошибку?

2. Я настроен скептически, потому что это файлы 20K и могут занять более 2 часов. Вот почему я искал значение тайм-аута.