dotbackup 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/dotbackup +96 -0
  2. metadata +63 -0
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ dotbackup = File.expand_path("~/.backup")
4
+ dotbu = File.expand_path("~/.bu")
5
+
6
+ #Check for proper installation
7
+ begin
8
+ raise "Could not find `~/.backup`" if File.exist?(dotbackup) == false
9
+ rescue
10
+ puts "\"~/.backup\" was not found. Would you like to create it? [y/n]: "
11
+ case gets.strip
12
+ when 'y'
13
+ system "mkdir -p ~/.backup"
14
+ when 'n'
15
+ puts "dotbackup has been rendered unusable! Oh, no!"
16
+ exit 0
17
+ end
18
+ end
19
+
20
+ begin
21
+ raise "Could not find `~/.bu`" if File.exist?(dotbu) == false
22
+ rescue
23
+ puts "\"~/.bu\" was not found. Would you like to create it? [y/n]: "
24
+ case gets.strip
25
+ when 'y'
26
+ open(File.expand_path(dotbu), 'w') do |write|
27
+ write.puts "---"
28
+ write.puts "#Files and directories go here!"
29
+ write.puts "\#Examples:"
30
+ write.puts "\# - \"~/Pictures\""
31
+ write.puts "\# - \"~/Documents\""
32
+ write.puts "..."
33
+ end
34
+ puts "You will now have to specify what you want to back up ny editing #{dotbu}."
35
+ exit 0
36
+ when 'n'
37
+ puts "dotbackup has been rendered unusable! Oh, no!"
38
+ exit 0
39
+ end
40
+ end
41
+
42
+ require 'zlib'
43
+ require 'yaml'
44
+ require 'rubygems'
45
+ require 'archive/tar/minitar'
46
+ include Archive::Tar
47
+
48
+ time = Time.now.strftime("%Y.%m.%d %H.%M.%S").to_s
49
+ tarball = dotbackup + '/' + time + '.tar.gz'
50
+ files = []
51
+
52
+ #Declare colors. Thanks, Sam Soffes!
53
+ class String
54
+ def self.colorize(text, color_code)
55
+ "\e[#{color_code}m#{text}\e[0m"
56
+ end
57
+
58
+ def cyan
59
+ self.class.colorize(self, 36)
60
+ end
61
+
62
+ def green
63
+ self.class.colorize(self, 32)
64
+ end
65
+ end
66
+
67
+ #Read configuration
68
+ puts "Reading #{dotbu}...".green
69
+ items = YAML.load_file(dotbu)
70
+
71
+ begin
72
+ raise if items.nil? == true
73
+ rescue
74
+ puts "No items were specified in #{dotbu}."
75
+ exit 0
76
+ end
77
+
78
+ #Check items and create array
79
+ puts "Indexing files...".green
80
+ items.each do |item|
81
+ begin
82
+ raise "Specified item \"#{item}\" does not exist." if File.exist?(File.expand_path(item)) == false
83
+ rescue
84
+ puts "Specified item \"#{item}\" does not exist."
85
+ exit 0
86
+ end
87
+ files << File.expand_path(item)
88
+ end
89
+
90
+ #Back up!
91
+ puts "Backing up at #{tarball}...".green
92
+ output = Zlib::GzipWriter.new(File.open(tarball, 'wb'))
93
+ Minitar.pack(files, output)
94
+
95
+ #Finished!
96
+ puts "\nCreated backup at \"#{tarball}\".".cyan
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dotbackup
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - dejay
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: archive-tar-minitar
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: dotbackup creates backup tarballs in ~/.backup. To specify files and
31
+ directories to back up, list them in ~/.bu.
32
+ email:
33
+ executables:
34
+ - dotbackup
35
+ extensions: []
36
+ extra_rdoc_files: []
37
+ files:
38
+ - bin/dotbackup
39
+ homepage: http://github.com/dejay/dotbackup
40
+ licenses: []
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ requirements: []
58
+ rubyforge_project:
59
+ rubygems_version: 1.8.24
60
+ signing_key:
61
+ specification_version: 3
62
+ summary: Back files up like an Olympian
63
+ test_files: []