Guest User

Untitled

a guest
May 31st, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. #!/usr/bin/ruby
  2. #
  3. # Usage: ftp-backup.rb <directory> <filename>
  4. # Example: ftp-backup.rb /home/jwood/backup/ my_important_file
  5.  
  6. require 'net/ftp'
  7.  
  8. NUM_BACKUPS = 7
  9.  
  10. directory_name = ARGV[0]
  11. file_name = ARGV[1]
  12.  
  13. server = 'my.server.address'
  14. username = 'jwood'
  15. password = 'secret'
  16. remote_dir = 'backup'
  17.  
  18. #
  19. # Rename the file to the new name, if it exists
  20. #
  21. def rename_if_exists(ftp, from_filename, to_filename)
  22. ftp.rename(from_filename, to_filename)
  23. rescue
  24. # Swallow - who cares
  25. end
  26.  
  27. #
  28. # Delete the file, if it exists
  29. #
  30. def delete_if_exists(ftp, file_to_delete)
  31. ftp.delete(file_to_delete)
  32. rescue
  33. # Swallow - who cares
  34. end
  35.  
  36. #
  37. # Coordinate the backup
  38. #
  39. Net::FTP.open(server) do |ftp|
  40. ftp.login(username, password)
  41. ftp.chdir(remote_dir)
  42.  
  43. delete_if_exists(ftp, "#{file_name}.#{NUM_BACKUPS-1}")
  44.  
  45. (NUM_BACKUPS-2).downto(1) do |i|
  46. rename_if_exists(ftp, "#{file_name}.#{i}", "#{file_name}.#{i+1}")
  47. end
  48.  
  49. rename_if_exists(ftp, file_name, "#{file_name}.1")
  50. ftp.putbinaryfile(directory_name + file_name)
  51. end
Add Comment
Please, Sign In to add comment