Manish Sapariya schrieb: > Hi, > I am trying to copy a remote directroy recursively using Net::sftp. > > I could not find any direct api given by this module and decided to > copy the entire directory file by file. > > However i am not able to figure out, how to tell between file or directory. > > I am trying to follow simple method, > > for every file in directory > if file is direcory > create directory > else > get/put directory > end > > However I am not able to find out any method to figure out the type of > file on remote machine. > > Any ideas? > Thanks and Regards, > Manish > > > > I just had this same problem, while I didn't solve your precise issue; the following code will recursively download the contents of a folder. It's rather crude, if anyone has a refactor suggestion I'm quite open to hear it. ################################################# require 'rubygems' require 'net/sftp' def open_or_get_all(sftp, open_dir, local_dir) handle = sftp.opendir(open_dir) items = sftp.readdir(handle) items.each do |item| if item.filename != '.' && item.filename != '..' if item.longname[0...1] == 'd' # mkdir locally Dir.mkdir(local_dir + item.filename, 0777) # open dir and download all open_or_get_all(sftp, open_dir + item.filename + '/', local_dir + item.filename + '/') else #puts local_dir+item.filename #puts open_dir+item.filename sftp.get_file open_dir+item.filename, local_dir+item.filename end end end sftp.close_handle(handle) end Net::SFTP.start('ext_server', 'user_name', 'password') do |sftp| open_or_get_all(sftp, "/home/user_name/dir_to_dnld/", "/lcl_dir/") end ################################################# maybe that will save someone else a few minutes...