diff options
Diffstat (limited to 'bin/byteback-snapshot')
| -rwxr-xr-x | bin/byteback-snapshot | 40 | 
1 files changed, 40 insertions, 0 deletions
| diff --git a/bin/byteback-snapshot b/bin/byteback-snapshot new file mode 100755 index 0000000..fc9aab3 --- /dev/null +++ b/bin/byteback-snapshot @@ -0,0 +1,40 @@ +#!/usr/bin/ruby +# +# Program to create a snapshot and/or rotate a directory of backup snapshots +# using btrfs subvolume commands. +# + +$LOAD_PATH.unshift('/usr/lib/byteback') + +require 'trollop' +require 'byteback' +include Byteback +include Byteback::Log + +opts = Trollop.options do +  opt :root, 'Backups directory (must be a btrfs subvolume)', +      type: :string + +  opt :snapshot, '(ignored for compatibility)' + +  opt :verbose, 'Print diagnostics' +end + +@root = opts[:root] +@verbose = opts[:verbose] + +fatal('--root not readable') unless File.directory?("#{@root}") + +@backups = BackupDirectory.new(@root) +snapshots = @backups.snapshots + +unless snapshots.empty? +  last_snapshot_time = snapshots.last.time +  fatal('Last snapshot was less than six hours ago') unless +    !last_snapshot_time || +    Time.now - last_snapshot_time >= 6 * 60 * 60 # FIXME: make configurable +end + +info 'Making new snapshot' +@backups.new_snapshot! +info 'Finished' | 
