Commit Graph

212 Commits

Author SHA1 Message Date
e3d052dc09 snap-sync: cleanup snap_sync_options, snapper call (long option name) 2017-11-22 21:59:19 +01:00
ec4723d65d snap-sync: btrfs-send/btrfs-receive pipe handling
- snapper is using hardcoded subvolume name to store its ro snapshots
  variable snapper_snapshots holds it (.snapshots)
- new optional progress visualiation (via pv)
- more robust error handling
  rely on btrfs-send/btrfs-receive exit code
2017-11-22 21:59:19 +01:00
62a33aa88b snap-sync: replace 'basename' with shell inline function 2017-11-22 21:59:19 +01:00
0593b2cfb5 snap-sync: new function run_finalize()
- new function run_finalize
- tagg already synced source snapshots (description and cleanup algorithem)
2017-11-22 21:59:19 +01:00
fea12084f9 snap-sync: cleanup target snapper structure handling
- verify_snapper_structure: better variable parsing
- handle situation of deleted snapper target structure
- lineup variable names
- ensure proper sync after snapper calls
- snapper metadata updates
- support multiple config option parameter
- update dry-run processing
- refuse to backup a snapshot to the target,
  if new source snap-id already exists on target subvolume
- cleanup permission settings for backupdir
2017-11-22 21:59:19 +01:00
50680410bb snap-sync: refine target_config, target_snapshot
- cleanup variable usage
  target_config   -> target_subvol
  target_snapshot -> target_snapshots

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:18 +01:00
b8ed1bc2cc snap-sync: cleanup presented disk infos in selection dialog
Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:18 +01:00
a97ff0668c snap-sync: new get_answer_yes_no(), check_snapper_failed_ids
- function get_answer_yes_no(): dialog requesting user feedback
- function check_snapper_failed_ids(): call cleanup as needed

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:18 +01:00
cd60b4d022 snap-sync: new cmdline-option 'backupdir'
- predefine a backupdir. This path is relative to the backup_root.
  It will be created as a subdirectory on target disk if necessary.
- parse_params(): accept lowercase option --target, --uuid

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:18 +01:00
c36d92159e snap-sync: trap handling, use prinf, snapper description handling
- substitute 'echo' calls with 'printf' calls where appropriate
- prepend $progname in notify messages
- trap handling in posix form
- update snapper description on successfull backup
- usage update: introduce subvolid
- usage update: introduce -t, --target
2017-11-22 21:59:18 +01:00
fe15397f33 snap-sync: enable snapper to admin snap-sync backups on target
- create and verify snapper compatible structure on target host
- create snapper config (snap-$selected_config) on target host
  if not already available. use a snap-sync template.
- change userdata for snapper listings on target config
  subvolid, uuid and hostname reflact the values from the source system
- introduce a snapper template (/etc/snapper/config-templates/snap-sync)
- adapt Makefile to support an initial snap-sync template
  per default, this templates excludes snap-sync backup configs
  from timeline and cleanup tasks

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:18 +01:00
f99b720a21 snap-sync: support selection of SUBVOLID
- either use --subvolid 'id' or --SUBVOLID 'id'
- or --subvolid='id' or --SUBVOLID='id'

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:18 +01:00
3033822423 snap-sync: reflact subvolid for processed snapshot backup
- snapper_sync_id should take into account the selected_subvolid
  in combination with the selected_uuid

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:18 +01:00
024cfc4392 snap-sync: 0.4.4 version bump
Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:18 +01:00
b973e3e0a8 snap-sync: support dryrun, and selection of mounted target subvolume
- introduce commandline option --dry-run
  perform a trial run where no changes are made.
- introduce option --TARGET
  Specify the mountpoint of the BTRFS subvolume to back up to.
  This makes it possible, to have multiple subvolumes on target disks,
  and select them as needed to store backup configurations.

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:18 +01:00
4b6a06f885 snap-sync: 0.4.3 version bump (inital posix version)
- use dash as reference shell
- refine all bashism to posix calls
- convert bash arrays to posix "pseudo arrays"
  yes, posix does not support handy arrays
- introduce global/local variables
- using (hopefully) more descriptive variable names
- new function verify_snapper_structure()
  that takes care to construct target snapper file-structure
  as needed
- 0.4.3 bump version

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:18 +01:00
2ed161c8db snap-sync: restructure function block
- new function get_disk_info()
- new function run_config()
- new function run_backup()
- new function get_target_disk()
- apply them to be in lexical order

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:17 +01:00
15a0aee30e snap-sync: new function check_prerequisites()
- check availability of referenced programs at runtime
- check if $SNAPPER_CONFIG is readable

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:17 +01:00
2612174cfe snap-sync: introduce function block, parse_params()
- create function block
  functions are sorted by name
- new function parse_params()
  check initial commandline  arguments and defaults
- introduce a verbose option
2017-11-22 21:59:17 +01:00
9f0524262d snap-sync: track script-name as 'progname'
- change variable 'name' to 'progname'
2017-11-22 21:59:17 +01:00
3349270546 snap-sync: cleanup trailing whitespace 2017-11-22 21:59:17 +01:00
19dc43125c snap-sync.bash: rename bash version of snap-sync to snap-sync.bash
Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2017-11-22 21:59:13 +01:00
James Barnett
52db8f099a List mounted btrfs disks with subvolid
When listing mounted devices, list the subvolid of the mountpoint, since
a single btrfs disk can be mounted multiple times using subvolumes.
Additionally tag snapshots with subvolid to keep track of this. This
will break current usage, but users can manually tag old snapshots with
subvolid's in order to migrate them. Add -s/--subvolid command line
parameter to pass specified subvolid to program.

Cf. #45.
2017-11-11 11:57:49 -05:00
James Barnett
fe05b91db4 make libnotify optional 2017-11-07 13:04:01 -05:00
James Barnett
34ef2fa185 instead of deleting old snapshot, change to number algorithm and note that it can be removed 2017-08-27 17:18:45 -04:00
James Barnett
c97a99f652 version bump 2017-08-26 14:20:26 -04:00
James Barnett
a4a6ef79a5 version bump 2017-08-23 19:36:55 -04:00
James Barnett
455b8718dd allow nonroot user to see help 2017-07-18 08:26:03 -04:00
Michael Albert
1a217f416b Fixed typo from TARKET to TARGET. 2017-07-12 10:52:15 -04:00
Michael Albert
69f388de11 Currently, since there are no UUIDs listed when TARGETS is computed,
then nothing is excluded even if a number of the mounts shouldn't be
there. This fixes that and ensures that the UUIDs are correctl listed
with the right mount point. This was originall broken in commit c4f12235ae.
2017-07-12 10:47:20 -04:00
Tom Vincent
a451654b1c Prevent duplicate notifications
Before, a notification would be sent for each login shell. Now,
deduplicate the users list and abstract the notification function whilst
we're at it.
2017-07-09 12:24:35 +01:00
James Barnett
c4f12235ae Check if root system is BTRFS before excluding it
Fixes #44.
2017-06-17 08:40:46 -04:00
James Barnett
0dd0300a23 look for config files in standard location on installation 2017-06-03 20:22:59 -04:00
James Barnett
c4654b8859 fix test for real 2017-06-03 19:59:33 -04:00
James Barnett
043bfe8bd2 fix typo 2017-06-03 19:58:25 -04:00
James Barnett
bd109348b1 use SNAPPER_CONFIG var cf. #43 2017-06-03 19:52:56 -04:00
James Barnett
663c0d6193 license header 2017-06-03 19:49:33 -04:00
James Barnett
f99fbbdafe Change snapper configuration location via Makefile
Update installation instructions.

Fixes #43.
2017-06-03 18:46:10 -04:00
James Barnett
bfbcefbe31 Check if UUID occurs twice for a configuration
Skip that configuration if that is the case.

Fixes #41.
2017-06-01 08:46:43 -04:00
James Barnett
dffb4f4446 printf formatting 2017-05-31 15:09:30 -04:00
James Barnett
e278c72c9d Prompt for user to delete failed snapshots
Fixes #40.
2017-05-31 14:59:02 -04:00
James Barnett
a43712ae8a Exclude source subvolumes
Find out parent mountpoint of /etc/conf.d/snapper, get UUID, and exclude
it from list of targets. If no external btrfs subvolumes found, exit.

Fixes #28.
2017-05-31 14:29:51 -04:00
James Barnett
b70a26579a rm test 2017-05-31 14:17:02 -04:00
James Barnett
789de29893 use error() 2017-05-31 12:54:19 -04:00
James Barnett
ccfb4c1209 trace errors
Fixes #39.
2017-05-31 12:16:37 -04:00
James Barnett
70d39d08e1 forgotten version bump 2017-05-30 06:59:09 -04:00
James Barnett
be30b052a4 kill program when error is trapped 2017-05-30 06:53:43 -04:00
James Barnett
dfab7e88d0 Loop disk selection until a valid number is entered.
Fixes #33.
2017-05-29 13:10:19 -04:00
Wael M. Nasreddine
effa00cc75 btrfs send takes options before arguments
btrfs-progs 4.11 includes this patch[0] which has updated the option
parser which has enforced the order in which arguments and options
appear in. See this email for context[1]

[0]: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git/commit/?id=010ceab56e067b87ea282fde6ff792c1ceefd7dc
[1]: https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg62226.html
2017-05-28 23:05:09 -07:00
James “Wes” Barnett
b449c1e0d0 Merge pull request #30 from kalbasit/patch-1
do not hardcode the name of the snapper configuration
2017-04-29 13:25:03 +00:00