是否可以使用内置的Ruby Net::FTP类传输整个目录的内容?
我正在用Ruby构建一个应用程序,它有一个命令,可以将某个目录的内容传输到远程FTP服务器。我知道在Ruby中通过ftp传输单个文件的方法是:是否可以使用内置的Ruby Net::FTP类传输整个目录的内容?,ruby,file,io,ftp,transfer,Ruby,File,Io,Ftp,Transfer,我正在用Ruby构建一个应用程序,它有一个命令,可以将某个目录的内容传输到远程FTP服务器。我知道在Ruby中通过ftp传输单个文件的方法是: file = File.open('file.txt') Net::FTP.open(ftp_server, username, password) { |ftp| ftp.putbinaryfile(file) } 我只是不知道如何通过内置FTP类传输目录的内容。如果有人能给我举个例子,或者知道一个Ruby库可以做到这一点,我将不胜感
file = File.open('file.txt')
Net::FTP.open(ftp_server, username, password) { |ftp|
ftp.putbinaryfile(file)
}
我只是不知道如何通过内置FTP类传输目录的内容。如果有人能给我举个例子,或者知道一个Ruby库可以做到这一点,我将不胜感激。首先,获取目录中的所有文件和子目录:
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
我没有时间测试这个,所以我可能会错过一些东西。首先,获取目录中的所有文件和子目录:
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
我没有时间测试这个,所以我可能会错过一些东西。是的,这是使用FTP客户端传输目录时必须采用的方法,就像使用mkdir一样。。把它隐藏起来。是的,这是必须的方式,就像你使用FTP客户端传输目录时它正在做的mkdir一样。。把它放在引擎盖下面。