Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/ruby
- #
- # Usage: ftp-backup.rb <directory> <filename>
- # Example: ftp-backup.rb /home/jwood/backup/ my_important_file
- require 'net/ftp'
- NUM_BACKUPS = 7
- directory_name = ARGV[0]
- file_name = ARGV[1]
- server = 'my.server.address'
- username = 'jwood'
- password = 'secret'
- remote_dir = 'backup'
- #
- # Rename the file to the new name, if it exists
- #
- def rename_if_exists(ftp, from_filename, to_filename)
- ftp.rename(from_filename, to_filename)
- rescue
- # Swallow - who cares
- end
- #
- # Delete the file, if it exists
- #
- def delete_if_exists(ftp, file_to_delete)
- ftp.delete(file_to_delete)
- rescue
- # Swallow - who cares
- end
- #
- # Coordinate the backup
- #
- Net::FTP.open(server) do |ftp|
- ftp.login(username, password)
- ftp.chdir(remote_dir)
- delete_if_exists(ftp, "#{file_name}.#{NUM_BACKUPS-1}")
- (NUM_BACKUPS-2).downto(1) do |i|
- rename_if_exists(ftp, "#{file_name}.#{i}", "#{file_name}.#{i+1}")
- end
- rename_if_exists(ftp, file_name, "#{file_name}.1")
- ftp.putbinaryfile(directory_name + file_name)
- end
Add Comment
Please, Sign In to add comment