3

特定のディレクトリの内容をリモート FTP サーバーに転送するコマンドを持つアプリケーションを Ruby で構築しています。Rubyでftp経由で単一のファイルを転送する方法は次のとおりです。

file = File.open('file.txt')
    Net::FTP.open(ftp_server, username, password) { |ftp|
    ftp.putbinaryfile(file)
}

build in FTP クラスを介してディレクトリの内容を転送する方法がわかりません。誰かがこれを行う方法の例を教えてくれたり、これを行うことができる Ruby ライブラリを知っていたりしたら、それは大歓迎です。

4

1 に答える 1

5

まず、ディレクトリ内のすべてのファイルとサブディレクトリを取得します。

entries = Dir.glob('my_dir/**/*').sort

sortすべてのディレクトリがそのファイルの前にあることを確認するために必要です)

これで、すべてのファイルをアップロードして、すべてのサブディレクトリを作成できます:

Net::FTP.open(ftp_server, username, password) do |ftp|
  entries.each do |name|
    if File::directory? name
      ftp.mkdir name
    else
      File.open(name) { |file| ftp.putbinaryfile(file, name) }
    end
  end
end

これをテストする時間がなかったので、何かを見落とす可能性がありました。

于 2013-06-06T20:49:00.290 に答える