#!/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) last_snapshot_time = @backups.snapshot_times.last fatal("Last snapshot was less than six hours ago") unless !last_snapshot_time || Time.now - @backups.snapshot_times.last >= 6*60*60 # FIXME: make configurable info "Making new snapshot" @backups.new_snapshot! info "Finished"