bup 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c9226e1ffb057342aaf45173d2ecaafc78537d19a25db5e25ae8275311e3c46f
4
- data.tar.gz: 74a4207d1606adbca58e7f2650a01f3ae422a8c9c752832c1e684faf817fd6a8
3
+ metadata.gz: 3228f83fe11f72b1e77210809dec6e3d8a4ccbdc849fa756c97f525803e04357
4
+ data.tar.gz: ea48181ef6b1adb871c2b558a6bfb9bdb50ef364459ec0fc453837d33dc57589
5
5
  SHA512:
6
- metadata.gz: 6d0c35ab5eb84c7a1a68527fe49e28f1347f6c0e9cc38017aa160ff31f41046afba36674cf5ce42cf6c6f1e30b2bad0c4f62108b54734253a490c21d5e73c8b1
7
- data.tar.gz: 835d1ec79c3c4fcd7b42d9632b4e8c649ee41cefcac949fd658d8874d50c25edd7b99768e461e230fe7d0b385997f4a8dd6772d2f4d8d4e6835d603da2f3e448
6
+ metadata.gz: 106db1b2e171e056b9bf19763f269898a2b5eeea115ce30918353fab95147850d124ffb53bcb64dfd35c46f220c71019ac0de8a3276263f93fc79c39a42a53b6
7
+ data.tar.gz: 64217767bfc2cbcfe73b7c1963175481cdfa4d8318ee2e2f4f92317bccddb1690244e48666891a78b5aa1d61da8876f90a80c8495850c62a3800619b2a4983d4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.6.0] - 2021-11-29
4
+
5
+ - Add pre_cmds list to allow executing command before backup, such as dumping a database.
6
+ - Add BUP_DESTINATION that holds the backup destination directory.
7
+ This may be used to put dumped database files in before a backup and clean
8
+ them up with a post_cmd.
9
+ - Refactor the tar.rb file for more simple individual function calls
10
+ and to do a little less redundant processing.
11
+ - Replaced --type=[full|incremental] with --incremental and --full options.
12
+
3
13
  ## [0.5.0] - 2021-11-13
4
14
 
5
15
  - Allow for a history size of 0.
data/README.md CHANGED
@@ -20,6 +20,7 @@ profiles:
20
20
  description: Simple backup of critical files.
21
21
  include:
22
22
  - "$HOME"
23
+ - /$BUP_DESTINATION/db.dump
23
24
  exclude:
24
25
  - "$HOME"
25
26
  - "$HOME/backups"
@@ -30,9 +31,14 @@ profiles:
30
31
  - tar
31
32
  - cJvf
32
33
  - "${BUP_FILENAME}.tar.xz"
34
+ pre_cmds:
35
+ - - dumpdatabase
36
+ - /$BUP_DESTINATION/db.dump
33
37
  post_cmds:
34
38
  - - ls
35
39
  - $BUP_FILENAME.tar.xz
40
+ - - rm
41
+ - /$BUP_DESTINATION/db.dump
36
42
  ```
37
43
 
38
44
  This defines a single profile, "default". You can list
@@ -57,4 +63,4 @@ Before a new backup is run, previous backups are removed. If you run many
57
63
  uncompleted backups, you will eventually remove all good backups from your
58
64
  backup history. This behavior is desired because backups should nearly always
59
65
  succeed and we want to ensure that disk pressure is kep lower than higher.
60
- Higher disk pressure might cause a backup to fail.
66
+ Higher disk pressure might cause a backup to fail.
data/exe/bup CHANGED
@@ -19,8 +19,12 @@ OptParse.new do |opt|
19
19
  profile = p
20
20
  end
21
21
 
22
- opt.on("-t", "--type=type", String, "Type of backup.") do |t|
23
- config.runtime["type"] = t == "incremental" ? t : "full"
22
+ opt.on("-i", "--incremental", String, "Set the type of backup to incremental.") do
23
+ config.runtime["type"] = "incremental"
24
+ end
25
+
26
+ opt.on("-f", "--full", String, "Set the type of backup to full.") do
27
+ config.runtime["type"] = "full"
24
28
  end
25
29
 
26
30
  opt.on("-l", "--list", "List profiles and exit.") do
data/lib/bup/tar.rb CHANGED
@@ -32,8 +32,9 @@ module Bup
32
32
  end
33
33
 
34
34
  # Prepare the destination directory.
35
- def prepare_destination(profile_name)
36
- destination = expand_string(@config.profile(profile_name)["destination"] || ".")
35
+ def prepare_destination(profile_name, profile)
36
+ destination = profile["destination"] || "."
37
+
37
38
  type = @config.runtime["type"] || "full"
38
39
 
39
40
  FileUtils.mkdir_p(destination) unless File.exist?(destination)
@@ -52,6 +53,8 @@ module Bup
52
53
  end
53
54
  end
54
55
 
56
+ ENV["BUP_DESTINATION"] = destination
57
+ ENV["BUP_FILENAME"] = filename
55
58
  filename
56
59
  end
57
60
 
@@ -90,32 +93,47 @@ module Bup
90
93
 
91
94
  raise "Missing profile #{profile_name}." unless profile
92
95
 
93
- args = @config.profile(profile_name)["tarcmd"].dup || ["tar", "cJvf", "${BUP_FILENAME}.tar.xz"]
96
+ args = profile["tarcmd"].dup || ["tar", "cJvf", "${BUP_FILENAME}.tar.xz"]
94
97
 
95
- ENV["BUP_FILENAME"] = prepare_destination(profile_name)
98
+ prepare_destination(profile_name, profile)
96
99
 
97
100
  if @config.runtime["type"] == "incremental"
98
101
  lastrun = @config.lastrun(profile_name)
99
102
  args += ["--newer", lastrun.strftime("%Y-%m-%d %H:%M:%S %z")] if lastrun
100
103
  end
101
104
 
105
+ run_pre_cmds profile
106
+
102
107
  @config.update_lastrun(profile_name)
103
108
 
104
109
  tf = build_exclude_file(profile["exclude"] || [])
105
110
 
106
- args += ["--exclude-from", tf.path]
107
- args += (@config.profile(profile_name)["include"] || ["."])
108
- args = args.map do |str|
109
- expand_string(str)
110
- end
111
-
111
+ # Build and run tar command.
112
112
  begin
113
+ args += ["--exclude-from", tf.path]
114
+ args += (profile["include"] || ["."])
115
+ args = args.map do |str|
116
+ expand_string(str)
117
+ end
118
+
119
+ # Run tar.
113
120
  run_cmd(*args)
114
121
  ensure
115
122
  tf.unlink
116
123
  end
117
124
 
118
- (@config.profile(profile_name)["post_cmds"] || []).each do |args|
125
+ run_post_cmds profile
126
+ end
127
+
128
+ def run_pre_cmds(profile)
129
+ # Before we update the last_run, execute any pre_cmds.
130
+ (profile["pre_cmds"] || []).each do |args|
131
+ run_cmd(*args.map { |c| expand_string(c) })
132
+ end
133
+ end
134
+
135
+ def run_post_cmds(profile)
136
+ (profile["post_cmds"] || []).each do |args|
119
137
  run_cmd(*args.map { |c| expand_string(c) })
120
138
  end
121
139
  end
data/lib/bup/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bup
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Baskinger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-14 00:00:00.000000000 Z
11
+ date: 2021-11-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Backup tool driver that connects tar, gnupg, and other tools to accomplish
14
14
  backups.