Created
February 1, 2010 12:21
-
-
Save solisoft/291653 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# FTP authentification -- see OVH FTP Backup guides | |
server, user, pass = ["your_server", "your_user", "your_pass"] | |
keep = 15 # keep last 15 days | |
what_to_save = ["/home/save/*.tar.gz"] # no subdirs | |
class SaveFtp | |
require "net/ftp" | |
require "time" | |
def initialize(server, user, pass) | |
@ftp = Net::FTP.new(server, user, pass) | |
end | |
def save(what_to_save) | |
today = Time.now.strftime("%Y%m%d") | |
@ftp.mkdir(today) rescue nil | |
@ftp.chdir(today) | |
what_to_save.each do |wts| | |
Dir.glob(wts).each do |file| | |
@ftp.putbinaryfile(file, file.split("/").last) | |
puts "saving #{file} => #{@ftp.getdir}/#{file.split("/").last}" | |
end | |
end | |
end | |
def delete_remote_dir(from = "/", keep = 15) | |
@ftp.chdir from | |
(@ftp.nlst - [".", ".."]).each do |folder| | |
begin | |
@ftp.chdir folder | |
todelete = @ftp.getdir | |
if ((Time.now - Time.parse(folder)) / 24 / 60 / 60) > keep | |
delete_remote_dir from + "/#{folder}" | |
(@ftp.nlst - [".", ".."]).each do |file| | |
@ftp.delete "#{todelete}/#{file}" | |
end | |
@ftp.chdir from | |
@ftp.rmdir todelete | |
else | |
@ftp.chdir from | |
end | |
rescue Exception => e | |
puts "Error : #{e.inspect}" | |
end | |
end | |
end | |
def close | |
@ftp.close | |
end | |
end | |
myftp = SaveFtp.new server, user, pass | |
myftp.save what_to_save | |
myftp.delete_remote_dir "/", keep | |
myftp.close |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment