Commit Graph

582 Commits (206e706d85032bdeae0df1d6418c58f8c4d2406b)

Author SHA1 Message Date
Axel Burri 7a1bc257c1 btrbk: raw targets: create fake btr_tree instead of maintaining separate list 2018-05-10 11:36:21 +02:00
Axel Burri 6c502cbdcc btrbk: search complete target tree for correlated subvolumes
- move matching for correlated subvolumes from get_receive_targets
  into new function _receive_target_nodes
- add lookup tables in btr_tree (RECEIVED_UUID_HASH, UUID_HASH),
  allowing for faster matching in _receive_target_nodes
- add vinfo_resolved() for mapping nodes to vinfo
- rename get_latest_common to get_best_parent (while moving some
  functionality to new function get_related)
- cleanup
2018-05-10 11:36:21 +02:00
Axel Burri 490f680f41 btrbk: bugfix: add backend mappings for "btrfs filesystem usage" 2018-04-30 14:15:30 +02:00
Axel Burri 719fb5fb74 btrbk: bugfix: correct scheduling of "first weekly backup in month/year"
In the scheduler, a month (or year) does not start at the first day,
but at the first `preserve_day_of_week`. Make sure that all days
before `preserve_day_of_week` in a month get delta_months+1.

Example (corner case):
  - `preserve_day_of_week  sunday`
  - `target_preserve  *m`
  - no backups in 2018-02
  - backup with timestamp 2018-03-01 (which is a thursday)
  - backup with timestamp 2018-03-04 (which is a sunday)

Without this patch, because there are no sunday backups in 2018-02,
the first backup is considered a weekly (+4d after sunday), and as
such "first weekly of month 2018-03", and the second one is discarded.

With this patch, the first item is considered "first weekly of month
2018-02", and the second gets "first weekly of month 2018-03".

NOTE: This change may result in (previously preserved) backups to be
deleted!
2018-04-05 18:00:29 +02:00
Axel Burri e4a0938712 btrbk: ignore "preserve_hour_of_day" on snapshots/backups having "timestamp_format=short"
Snapshots and backups having no exact time information (created with
"timestamp_format=short") are set to 00:00, which would be regarded as
"previous day" if preserve_hour_of_day is greater than 0. Fix this by
ignoring preserve_hour_of_day in this case.
2018-04-05 18:00:29 +02:00
Axel Burri c89ffd4213 btrbk: schedule: format preserve text only if needed
No functional changes, improves performance of schedule().
2018-04-05 18:00:24 +02:00
Thiodwitnir 5791d72171 btrbk: add "preserve_hour_of_day" configuration option
Introduces the new config option "preserve_hour_of_day" to specify
after what time backups should be considered as dailies.

Based on pull request #204, with changes:
 - calculation of weekly backups
 - change format of preserve_matrix
2018-04-05 16:37:31 +02:00
Axel Burri 951ae256fa btrbk: bump version to 0.27.0-dev 2018-04-05 16:26:57 +02:00
Axel Burri 1fd3a547df change version to 0.26.1; bump copyright year 2018-03-05 11:55:56 +01:00
Axel Burri 6f38536052 btrbk: set c_default for config keys with computed default
Suppress "Option redefined" warning for snapshot_name config option,
which has hardcoded (computed) default already set when checking.

fix regression: 0ebe2ea2e1
2018-02-26 16:06:12 +01:00
Axel Burri e75cf0c72c btrbk: fix exit status and transaction log when archive_exclude is set
Similar to ABORTED=USER_SKIP (active commandline filter), archives
having ABORTED=ARCHIVE_EXCLUDE_SKIP (active archive_exclude
configuration) do not cause exit status 10 and are hidden from
transaction log.
2018-02-26 14:35:26 +01:00
Axel Burri 5651c96e4e btrbk: archive: always print "[-]" if no action was performed for target 2018-02-14 00:18:44 +01:00
Axel Burri 8610e75459 btrbk: add archive_exclude configuration option
Support wildcard characters, matches against both "$sroot->{PATH}" and
"$sroot->{PATH}/$snapshot_name".
2018-02-13 22:50:23 +01:00
Axel Burri 0ebe2ea2e1 btrbk: add "allow_multiple" flag for config_options declaration; use for option "group" 2018-02-13 19:30:24 +01:00
Axel Burri 3aaafa3d88 btrbk: add "meta" context for config defaults
Preparatory patch to allow multiple identical config keys in same
section.
2018-02-13 19:28:38 +01:00
Axel Burri b2b43cf199 btrbk: add configurable error_statement for check functions
Corrects error messages from --exclude option.
Applies to in check_file(), check_url() and append_config_option().
2018-02-13 17:40:14 +01:00
Axel Burri db1fe2d11a btrbk: fix output of "btrbk list backups" and "btrbk stats" (match all uuid/received_uuid combinations) 2018-02-07 16:24:49 +01:00
Axel Burri a3641cff74 btrbk: fix filter statement matching for volume="/"
While $vol->{URL} can contain "//" if volume="/" (intentionally, this
is an assembled path), the filter statements are sanitized using
check_url(). This means we need to match the filter statement against
check_url($vol->{URL}). Same applies to subvol.
2018-02-03 12:55:21 +01:00
Axel Burri 90fed6525e btrbk: bugfix: restrict snapshot_dir and snapshot_create to root/volume/subvolume context 2018-01-31 19:01:00 +01:00
Axel Burri 753d68b2ed btrbk: add documentation on caching in btr_tree() 2018-01-30 14:02:36 +01:00
Axel Burri 84bac59ab4 btrbk: fix parsing of "openssl_iv_size" configuration option 2018-01-21 18:53:29 +01:00
Axel Burri 13f37491ed btrbk: cosmetics: change order of commands in help message 2017-10-12 17:08:46 +02:00
Axel Burri 79cbf7c0c3 change version to 0.26.0 2017-10-12 00:39:06 +02:00
Axel Burri 909c68f164 btrbk: transaction_log and transaction_syslog are only allowed in root context 2017-10-11 20:54:41 +02:00
Axel Burri d941ecfce9 documentation: change digint links to https:// 2017-10-11 20:54:41 +02:00
Axel Burri e3ee674085 btrbk: limit search depth to 256 when resolving ancestors
Note that the current implementation is not very optimized, we should
introduce a parent/child hash table for all queries in
get_latest_common().
2017-10-10 16:46:05 +02:00
Axel Burri 3be65b9f67 btrbk: resolve ancestors (recursive on parent_uuid chain) when searching for latest common subvolume 2017-10-10 13:10:33 +02:00
Axel Burri 0799820556 btrbk: support btrfs-progs 4.13.2: adapt parsing of "btrfs subvolume list"
btrfs-progs v4.13.2 changed the output of "btrfs subvolume list", in
order to make the tabular output format look nicer (?!?):

e4c6772f69
2017-10-09 23:04:07 +02:00
Axel Burri e9a517f161 btrbk: add options "{snapshot,target,archive}_qgroup_destroy": destroy qgroups whenever a subvolume is deleted
Btrfs does not destroy qgroups when subvolumes are deleted (see
https://bugzilla.kernel.org/show_bug.cgi?id=91751). As a workaround
for this, btrbk can be configured to always destroy the corresponding
default qgroup "0/<subvol-id>" whenever a subvolume (snapshot, backup
or archive) is deleted.

Added configuration options:
 - snapshot_qgroup_destroy
 - target_qgroup_destroy
 - archive_qgroup_destroy
2017-10-02 16:23:23 +02:00
Axel Burri 6cb98700d8 btrbk: allow archive_preserve_* options in root context only 2017-10-02 13:54:37 +02:00
Axel Burri 2e974c1f4f btrbk: add "--wipe" command line option 2017-09-28 14:17:00 +02:00
Axel Burri 5bdc3e527b btrbk: add "prune" command 2017-09-28 14:17:00 +02:00
Axel Burri 2809dc54c5 btrbk: remove sorting of deleted subvolumes in summary (not needed anymore)
Deleted subvolumes are already sorted by schedule().
Sorting by PATH is bad anyways, as it does not sort _NN postfix
correctly.
2017-09-28 14:17:00 +02:00
Axel Burri 512aca5332 btrbk: parse output of "btrfs subvolume delete"
When doing a batch delete (multiple deletes with one call to "btrfs
subvolume delete"), we want to know which subvolumes have failed. For
this, we need parse the error output.

On any parsing failure, we assume that nothing has been deleted, and
warn accordingly (forward compatibility).
2017-09-28 14:17:00 +02:00
Axel Burri 9d9527ca9a btrbk: simplify transaction function calls
Prefix transaction status with "dryrun_" in start_transaction() /
end_transaction if $dryrun is set.
2017-09-28 14:17:00 +02:00
Axel Burri 422d52c063 btrbk: add key derivation for encrypted raw targets using external backend 2017-09-28 14:17:00 +02:00
Axel Burri de7628ac7c btrbk: add openssl_enc encryption for raw targets; add system_urandom()
Example:

Manually create a key:

    # KEYFILE=/some/secure/place/btrbk.key
    # dd if=/dev/urandom bs=1 count=32 | od -x -A n | tr -d "[:space:]" > $KEYFILE

btrbk.conf:

    volume /mnt/btr_pool
      incremental no
      raw_target_encrypt  openssl_enc
      openssl_ciphername  aes-256-cbc
      openssl_iv_size     16  # NOTE: set to "no" if no IV is needed by the selected cipher
      openssl_keyfile     /some/secure/place/btrbk.key

      subvolume home
        target raw ssh://cloud.example.com/backup
2017-09-28 14:17:00 +02:00
Axel Burri 251c2fb2a1 btrbk: re-enable parsing of deprecated raw file format (uuid suffix) 2017-09-28 14:17:00 +02:00
Axel Burri e804930b5e btrbk: allow deletion of non-incremental raw targets
implemented directly in btrfs_subvolume_delete()
2017-09-28 14:17:00 +02:00
Axel Burri cd8d7e3a0a btrbk: use sidecar file "*.info" instead of encoding uuids into filename for raw targets
pros:

 - better forward compatibility, e.g. symmetrical encryption
 - better readability of files

cons:

 - two files per backup
2017-09-28 14:16:53 +02:00
Axel Burri 571dae4428 btrbk: do not run in perl taint mode by default: remove "perl -T" in hashbang; hardcode $PATH only if taint mode is enabled
While taint mode [1] is a nice feature of perl, e.g. it disallows
using variables (such as filenames from the config file) which were
not validated in system() commands, it also treats $PATH as insecure
(which inherently is, as perl cannot know who messed around with it).

  [1] perlsec(1): http://perldoc.perl.org/perlsec.html
  [2] perlrun(1): http://perldoc.perl.org/perlrun.html

Note that btrbk still does all taint checks, and can be run in taint
mode:

  - by executing `perl -T /usr/sbin/btrbk`,
  - or by changing the hashbang to: `!#/usr/bin/perl -T`.
2017-09-25 17:53:35 +02:00
Axel Burri 5f867c2347 btrbk: run_cmd(): catch all possible errors when executing system command 2017-09-25 15:00:40 +02:00
Axel Burri e402435dc8 btrbk: treat deprecated warnings as non-fatal
Despite FATAL warnings are discouraged in perl and may break forward
compatibility [1], we still use it as btrbk is usually run as root and
we really want perl to die on programmatic errors.

  [1] "perldoc warnings"
2017-09-25 15:00:40 +02:00
Axel Burri 6c2d56d621 btrbk: action "clean": dont list failed deletes in summary 2017-09-21 12:39:48 +02:00
Axel Burri f113436626 btrbk: bugfix: check path when expanding wildcards (warn and ignore if check fails)
Before this patch, btrbk errored (unsafe command), and then died.
Fixes #181.
2017-09-11 18:49:14 +02:00
boerwastaken d265c34149 btrbk: make SSH minimally chatty (always add '-q' option)
Fixes digint/btrbk#179: When SSH is chatty (informing of host key
rollover etc) the remote command output parser borks.
2017-09-04 13:00:19 +02:00
Axel Burri 8eb88a8681 documentation: replace POD header with comments 2017-08-28 20:33:00 +02:00
Axel Burri 88aa8c1fea btrbk: remove "duration" column from transaction_log/transaction_syslog
The "duration" column in the transaction log has proven to be
confusing to some users, especially on errors (e.g. "send-receive
ERROR 27" in issue #177). As it's not really necessary (duration can
be computed from the corresponding "starting" log entry), it's now
being dropped.
2017-08-28 17:55:27 +02:00
Axel Burri 6acea6a08d btrbk: bugfix: print correct time in end_transaction() 2017-08-28 17:54:17 +02:00
Axel Burri 5428e9cd93 btrbk: add "resume" and "snapshot" commands; add --preserve-snapshots and --preserve-backups options; deprecate "-r, --resume-only" command line option 2017-08-21 13:23:20 +02:00
Axel Burri a9f1b6b24a change version to 0.25.1 2017-07-30 16:03:58 +02:00
Axel Burri 6cf5d59644 btrbk: add support for btrfs-progs 4.12: do not fail or set realpath_cache for relative paths in btrfs_subvolume_show()
As of btrfs-progs-v4.12, the "btrfs subvolume show" command does not
print the full (absolute, resolved) path anymore [1]. Instead, it prints
the relative path to btrfs root (or "/" if it is the root).

The impact for btrbk is that we cannot fill our realpath_cache in
btrfs_subvolume_show() anymore. This is not fatal, but has the
following consequences:

  - The "check for duplicate snapshot locations" may now miss
    subvolumes specified by symlinks.

  - If multiple "volume" sections point to the same subvolume (e.g. if
    specified using symlinks) an additional "btrfs subvolume list" is
    called. Note that the subvolume will still be recognized as
    identical, and the btr_tree will not be rebuilt.

  [1] btrfs-progs commit: b7df24aa5cddc4802b9938f56372b73869775cd9
2017-07-30 15:25:32 +02:00
Axel Burri 26682213e2 btrbk: cleanup btrfs_subvolume_list() and comments 2017-07-30 15:03:23 +02:00
Axel Burri 356231bc2a btrbk: abort if source subvolume has readonly or received_uuid flag 2017-07-29 19:03:23 +02:00
Axel Burri c0c546eb4e btrbk: stats command: show "correlated" status instead of "orphaned" (inverse logic which caused a lot of confusion) 2017-06-25 21:16:08 +02:00
Axel Burri 15bae5e051 btrbk: stats command: print up-to-date status on backups 2017-06-25 21:14:03 +02:00
Axel Burri b2cc99b0fb btrbk: bugfix: accept "no" for "transaction_log", "transaction_syslog" and "lockfile" configuration options 2017-06-25 18:06:06 +02:00
Axel Burri 315b3f24a1 btrbk: add config option "stream_buffer <size>". if set, pipes send stream through "mbuffer -m <size>" 2017-06-08 12:35:22 +02:00
Axel Burri 7436d9432c change version to 0.25.0 2017-03-18 16:53:07 +01:00
Axel Burri d31ffb8cb0 btrbk: allow trailing comments in btrbk.conf 2017-03-18 16:34:53 +01:00
Axel Burri 358a2b1169 btrbk: cleanup: btrfs_send_to_file() takes no more additional options (all info is fetched directly from source/target config) 2017-03-18 15:06:48 +01:00
Axel Burri 28c65e4675 btrbk: add raw_target_split option, using "split" instead of "dd" to write raw files 2017-03-18 14:47:43 +01:00
Axel Burri 3b7ede773a btrbk: bugfix: make sure rate limiting comes after compression in cmd_pipe 2017-03-18 12:18:47 +01:00
Axel Burri cb82bd5fa4 btrbk: add supoort for "backend btrfs-progs-sudo" option; adaptions in ssh_filter_btrbk.sh 2017-01-04 15:04:22 +01:00
Ian Kelling d02f67a924 btrbk: get_receive_targets: also match "src.received_uuid == target.uuid"
This gets important when using an old backup disk as source.

In terms of btrfs send/receive, all subvolumes matching "uuid /
received_uuid" are valid backups.

Merged (amend) from pull request: #116

Verified by Axel Burri <axel@tty0.ch>
2017-01-04 12:41:05 +01:00
Axel Burri 79637de5aa btrbk: raw_target_encrypt: always set "gpg --no-random-seed-file": prevents creation of "~/.gnupg/random_seed" with slight perfomance penalty.
We set "--no-random-seed-file" because one of the btrbk
design principles is to not create any files unasked. Enabling
"--no-random-seed-file" creates ~/.gnupg/random_seed, and as
such depends on $HOME to be set correctly (think on running in
cron). From gpg2(1) man page:
  --no-random-seed-file GnuPG uses a file to store its
  internal random pool over invocations This makes random
  generation faster; however sometimes write operations are not
  desired. This option can be used to achieve that with the cost
  of slower random generation.
2017-01-03 13:41:39 +01:00
Axel Burri b69e9ebf34 btrbk: show aggregate "size" and "used" for "usage" action 2016-12-11 15:36:48 +01:00
Axel Burri da849b37ae change version to 0.24.0 2016-11-16 15:32:17 +01:00
Axel Burri ec63e9932b btrbk: support for btrfs-progs v4.8.3
Fix parsing of "btrfs sub show" output, which has changed for toplevel
subvolume.
2016-11-16 15:02:49 +01:00
Axel Burri 57be688f6b btrbk: bugfix: fix "list latest" with no snapshots 2016-11-12 13:21:33 +01:00
Axel Burri a8a311c8c7 btrbk: add "backend" configuration option: support for distinct binaries from btrfs-progs-btrbk
btrfs-progs-btrbk sources (fork of btrfs-progs) can be found at:

https://github.com/digint/btrfs-progs-btrbk
2016-08-29 18:40:42 +02:00
Axel Burri dc5dee3121 btrbk: use loglevel trace (instead of debug) for repeated WARN_ONCE 2016-08-29 15:03:56 +02:00
Axel Burri 1aa208151b btrbk: improve check_file(): sanitize only on demand 2016-08-29 15:03:20 +02:00
Axel Burri 4c4afe776d btrbk: skip target metadata test if send/receive has errors 2016-08-29 15:03:11 +02:00
Axel Burri 961f96833a btrbk: use "dd" for raw target output, with configurable block size (raw_target_block_size)
We use "dd" instead of shell redirections, as it is common to have
special filesystems (like NFS, SMB, FUSE) mounted on the raw target
path. By using "dd" we make sure to write in reasonably large blocks
(default=128K), which is not always the case when using redirections
(e.g. "gpg > outfile" writes in 8K blocks).

Another approach would be to always pipe through "cat", which uses
st_blksize from fstat(2) (with a minimum of 128K) to determine the
block size.
2016-08-25 13:14:01 +02:00
Axel Burri 3dabb507e6 btrbk: do not set "--compress-algo none" on gpg command if raw_target_compress=no
Note that gpg might still compress (according to OpenPGP standard) if
--compress-algo is not set. This is generally a good thing.
2016-08-25 12:53:12 +02:00
Axel Burri b0feaf4413 btrbk: force disabling of ssh compression (ssh -o compression=no) if stream_compress is set 2016-08-25 12:53:12 +02:00
Axel Burri b49ee61ecd btrbk: run_cmd: cosmetics 2016-08-25 12:53:12 +02:00
Axel Burri 5f530e47e5 btrbk: run_cmd: only perform sanity checks on files (hardcoded parts are considered safe) 2016-08-25 12:53:06 +02:00
Axel Burri 96f0d4c175 btrbk: fix and cleanup stream compression 2016-08-24 15:25:48 +02:00
Axel Burri 13d27c8616 btrbk: perform extra metadata check on target subvolume after "btrfs receive"
Eliminates error cases where "btrfs receive" input is null, at the
cost of an additional call to "btrfs subvolume show".
2016-08-19 17:41:03 +02:00
Axel Burri deeb12c069 ssh_filter_btrbk: allow stream compression if --compress option is set. 2016-08-19 17:36:40 +02:00
Axel Burri 13887837b1 btrbk: add lz4 compression 2016-08-19 16:58:53 +02:00
Axel Burri 3845fa5ec5 btrbk: use format from %compression hash in $raw_postfix_match 2016-08-19 16:58:53 +02:00
Axel Burri 05c54a2390 btrbk: add compression options: pigz, pbzip2, lzo 2016-08-19 16:58:53 +02:00
Axel Burri a019d8a3e3 btrbk: add configuration option "stream_compress"
- add sophisticated stream compression in run_cmd
- add special "compress" cmd_pipe item
- add special "redirect" cmd_pipe item:
  use shell redirection instead of troublesome "dd of=".
- disable ssh_compression if stream_compression is set
2016-08-19 16:56:38 +02:00
Axel Burri 99ff88f82a btrbk: use (and propagate) CONFIG in vinfo instead of hard-setting RSH 2016-08-19 16:54:49 +02:00
Axel Burri 079b947cd6 btrbk: add function WARN_ONCE 2016-08-19 16:48:45 +02:00
Tobias Grosser 84a5c56a83 btrbk: disable compression in gpg
We already perform compression before gpg, such that compressing in gpg
is just a waste of time. Interestingly, it seems gpg is not trying to
recompress gzip[ed] input streams, as for the default gzip compression
this patch does not change performance. However, it is necessary for
the upcoming lz4 compression to show its real benefit.
2016-08-07 13:40:45 +02:00
Axel Burri 9a5e8311be change version to 0.23.3 2016-07-14 01:41:45 +02:00
Axel Burri 796b6bd9bf btrbk: replace "realpath -e" with "readlink -e" for mountpoint discovery 2016-06-18 13:04:43 +02:00
Axel Burri 91d02ca97b change version to 0.23.2 2016-06-07 16:41:41 +02:00
Axel Burri e4a7ba4be5 btrbk: add lockfile support, using perl "flock": add configuration option "lockfile <file>", and command line option "--lockfile"' 2016-06-07 16:17:02 +02:00
Axel Burri 7326b9816c btrbk: bugfix: raw targets: correctly handle multiple backups in same target directory 2016-05-09 12:42:04 +02:00
Axel Burri cb0851c8b6 change version to 0.23.1 2016-05-03 16:21:34 +02:00
Axel Burri 5cd03a8fbf btrbk: remove absolute path to executables, this caused trouble on some distros 2016-05-03 14:34:04 +02:00
Axel Burri 54b5368309 btrbk: code cleanup (remove unneeded code, rename vars) 2016-05-03 13:19:42 +02:00
Axel Burri 12d435d42a btrbk: explain "orphaned" status in "stats" command, and suppress it on "list backups" command 2016-04-30 13:01:12 +02:00
Axel Burri 46f1e5e2e4 btrbk: only load Data::Dumper if needed (log level "trace", or development version); cosmetics 2016-04-28 13:03:15 +02:00
Axel Burri 49ae46d51d btrbk: do not print headers to transaction_log, these are documented in btrbk.conf(5) 2016-04-28 12:51:00 +02:00
Axel Burri e9e398af37 Merge branch 'syslog' 2016-04-28 12:45:13 +02:00
Axel Burri 7e7c28f8f1 btrbk: add eval_quiet(), a simple wrapper around eval, disabling $SIG_(__DIE__) 2016-04-28 12:43:32 +02:00
Axel Burri 082754173c btrbk: bugfix: raw targets: do not inject child if add_btrbk_filename_info() failed 2016-04-25 21:12:33 +02:00
Axel Burri 47eb14f5fb btrbk: syslog: add syslog hack in print_formatted(); remove print-to-scalar hack 2016-04-25 19:40:11 +02:00
Axel Burri c424d917b6 btrbk: syslog: only load Sys::Syslog module if configuration option is set; soft-fail on syslog calls 2016-04-25 18:36:54 +02:00
Hans van Kranenburg 59d96420c8 btrbk: add transaction logging to syslog
Add configuration option transaction_syslog, which can be set to a short
name of a syslog facility, like user or local5. Most of the ones besides
localX do not really make sense, but whatever, let the user decide.

The only logging that is relevant for logging to syslog is the logging
generated inside sub action, so it's easy to hijack all messages in
there and also send them to syslog if needed.

All output is done via print_formatted, which expects a file handle.
So, abuse a file handle to a string to be able to change as less code as
needed for this feature.

Since syslog already adds the timestamps for us, I added a syslog
formatting pattern, which is very similar to tlog, omitting the
timestap.
2016-04-25 17:32:08 +02:00
Axel Burri 89df601ee5 btrbk: allow "<hostname>:<path>" notation for volume and target sections 2016-04-25 16:34:52 +02:00
Axel Burri 702ee8950e btrbk: bugfix: vinfo(): correctly parse url, using check_url() 2016-04-25 15:10:00 +02:00
Axel Burri 357b72bd3f btrbk: code cleanup: check_file() and check_url() do all the sanitize parts 2016-04-25 14:23:15 +02:00
Axel Burri 191284cd43 btrbk: bugfix: set correct parent section when propagating targets 2016-04-24 15:59:17 +02:00
Axel Burri 4ffaf430c5 change version to 0.23.0 2016-04-23 15:06:57 +02:00
Axel Burri 2e8e4ddefc btrbk: cosmetics: change info log of send/receive; change topic line; fix typos 2016-04-23 14:58:08 +02:00
Axel Burri efc260ef91 btrbk: add sanity check on timezone offset; add documentation about implications of long-iso time format 2016-04-23 14:49:12 +02:00
Axel Burri c7dd680537 btrbk: make sure that snapshots/backups with date in the future are never deleted 2016-04-22 20:51:31 +02:00
Axel Burri ecb2307b22 btrbk: send/receive: only inject child if target creation was successful 2016-04-22 20:25:30 +02:00
Axel Burri 3ffa63daba btrbk: bugfix: btrfs_subvolume_show(): quote real_path everywhere 2016-04-22 20:17:26 +02:00
Axel Burri c13c99ada5 btrbk: add new time_format "long-iso", with seconds and timezone offset (iso8601 format); add function timestamp(): remove dependency to POSIX 2016-04-22 19:47:01 +02:00
Axel Burri e824c21f50 btrbk: use build-in Time::Local in combination with localtime() instead of Date::Calc; correctly calculate leap hours 2016-04-20 22:45:11 +02:00
Axel Burri c73dffbd25 btrbk: handle missing Data::Dumper gracefully 2016-04-19 22:12:08 +02:00
Axel Burri 829490f963 btrbk: put btrbk filename info directly to tree node (parse only once)
performance win: factor 2.3
2016-04-19 22:04:07 +02:00
Axel Burri c225231742 btrbk: reuse subvol list for get_receive_targets()
performance win: factor 2.6 !
2016-04-19 22:01:23 +02:00
Axel Burri 2b22524ccd btrbk: sane defaults: xxx_preserve_min defaults to "all", xxx_preserve default to "no" (for backwards compatibility with 0.22.0 default) 2016-04-19 21:37:04 +02:00
Axel Burri 29b9c8fc60 btrbk: action "archive": abort if receive targets of archive candidates exist at unexpected location. makes sure we dont have duplicates on our archives 2016-04-19 21:02:51 +02:00
Axel Burri 5e7a6e5ef4 btrbk: action "archive": delete archives according to archive retention policy 2016-04-19 21:02:51 +02:00
Axel Burri 31f0f97ff0 btrbk: fix info logging for send/receive 2016-04-19 21:02:51 +02:00
Axel Burri 7807fface8 btrbk: cosmetics; s/config_override_opts/config_override_cmdline/g 2016-04-19 21:02:51 +02:00
Axel Burri 2c3997ad0a btrbk: bugfix: action "config print": correctly handle undef options; skip deprecated options 2016-04-19 21:02:47 +02:00
Axel Burri a27f99af46 change version to 0.23.0-rc1 2016-04-17 21:46:56 +02:00
Axel Burri bbb18f5af7 btrbk: cosmetics on info warnings 2016-04-17 21:46:53 +02:00
Axel Burri edfebb8193 btrbk: action "origin": use --format options; do not recurse into parent chain 2016-04-16 22:05:26 +02:00
Axel Burri 1151d2c572 btrbk: print_formatted(): honor use_header argument for all table formats 2016-04-16 20:25:22 +02:00
Axel Burri 9afe17f738 btrbk: continue gracefully (skip instead of abort) when resuming subvolume having existing (possibly garbled) target; cosmetics on debug/trace log 2016-04-16 19:31:29 +02:00
Axel Burri ec9dd761b8 btrbk: use "[subvol cmd]" instead of "[btrfs cmd]", and print this as info log 2016-04-16 18:06:55 +02:00
Axel Burri 689d3d1233 btrbk: action "archive": print created subdirectories on summary; cleanup 2016-04-16 17:31:14 +02:00
Axel Burri 5a06a85619 btrbk: moved get_receive_targets_fsroot() out of get_receive_targets(), while cleaning up 2016-04-16 17:25:53 +02:00
Axel Burri 774e6ef842 btrbk: macro_archive_target(): only warn on unexpected targets, not abort 2016-04-16 17:25:53 +02:00
Axel Burri de05b99757 btrbk: rename action "clone" to "archive" (should have been like this from the beginning) 2016-04-16 17:25:51 +02:00
Axel Burri 4bd68a2e35 btrbk: action "clone": abort all as soon as one target aborts 2016-04-16 00:45:16 +02:00
Axel Burri cc20dfb8c3 btrbk: schedule(): use "informative_only" option instead of checking for empty value; make sure real values are always in front 2016-04-15 23:29:47 +02:00
Axel Burri d0cfba7914 btrbk: action "clone": create missing directories 2016-04-15 23:29:47 +02:00
Axel Burri a5c7c53a86 btrbk: action "clone": print scheduler results if --print-schedule option is set 2016-04-15 23:29:47 +02:00
Axel Burri 14de16aabe btrbk: add action "clone": recursively send/receive all backups to an archive directory 2016-04-15 23:29:47 +02:00
Axel Burri 3c9aff4c40 btrbk: enable --override option 2016-04-15 11:10:12 +02:00
Axel Burri e3702305e6 btrbk: bugfix: update uuid_cache after btrfs_subvolume_show() 2016-04-15 11:07:26 +02:00
Axel Burri 6e997674fc btrbk: remove "btrfs_progs_compat" configuration option, from now on we REQUIRE btrfs-progs >= v3.18.2: we rely on received_uuid for most operations 2016-04-15 11:07:16 +02:00
Axel Burri 6aa54b2dd5 btrbk: bugfix: correctly handle NODE_SUBDIR in vinfo_inject_child() 2016-04-14 18:24:11 +02:00
Axel Burri 141b70f26b btrbk: bugfix for subdir resolving: on older kernels, the "subvolid" mount option is not shown: try to read it with btrfs_subvolume_show() 2016-04-14 18:21:00 +02:00
Axel Burri a1ee9d5c6d btrbk: allow "{snapshot,target}_preserve no": disable retention policy 2016-04-14 14:43:43 +02:00
Axel Burri a03c515b0a btrbk: enter failsafe mode on deprecated preserve configuration: at least create the snapshots, and print message to read the upgrade documentation 2016-04-14 13:41:53 +02:00
Axel Burri 7c0987bd3c btrbk: be harsh (abort) on deprecated "{snapshot,target}_preserve_{daily,weekly,monthly}" and "resume_missing no" options; change default of snapshot_preserve_min to one day 2016-04-13 22:05:20 +02:00