3

我正在用 Ruby 构建一个应用程序,它有一个命令,可以将某个目录的内容传输到远程 FTP 服务器。我知道在 Ruby 中通过 ftp 传输单个文件的方法是:

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

我只是不知道如何通过 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 回答