btrbk-0.32.6 * Fix backup of unrelated (by parent_uuid) snapshots (close #339). * Remove echo -e for portability (close #506). * Support btrfs send protocol v2 (send_protocol and send_compressed_data config options). * Add bzip3 support. * Convert ssh_filter_btrbk.sh to POSIX sh, and harden it. * Slight change in ssh_filter_btrbk.sh logging output. * Minor bugfixes, stability and documentation improvements. btrbk-0.32.5 * Correct handling of zero-size raw info file (close #491). btrbk-0.32.4 * Fix regression: wrong deprecation warnings in some cases. btrbk-0.32.3 * Fix deletion of many subvolumes at once (close #476). * Allow disabling ssh_identity and ssh_user options. * Minor bugfixes and documentation improvements. btrbk-0.32.2 * Fix regression: archive on missing target directories. * Fix action "config print". * Print version and help message to stdout (close #452). * Check results of filesystem usage (close #469). * Add "compat ignore_receive_errors" option (close #383). * Support multiple gpg recipients (close #471). * Fix changelog: remove "compat missing_otime" item in v0.32.1. * Fix changelog: correct "warn_unknown_targets" item in v0.31.3. * Minor bugfixes and framework improvements. btrbk-0.32.1 * Fix regression: correctly read mountinfo (close #445). * Fix regression: filter paths for "lsbtr" (action "ls"). * Add backend btrfs-progs-doas (close #444). * Allow directory traversal for local command line arguments. * Display all source subvolumes in "usage" action. * Handle errors from btrfs filesystem usage. btrbk-0.32.0 * MIGRATION - If timestamp_format is not configured, explicitly set "timestamp_format short" to revert old behavior. - Update ssh_filter_btrbk.sh on remote hosts. * Change default for timestamp_format to "long". * Optional "volume" config section. * Use "volume" section only for grouping and relative paths. * Allow absolute path for "subvolume" and "snapshot_dir" (close #407, #121). * Support subvolume names with UTF-8 characters (close #392, #213, #120). Add "safe_commands" option for paranoid people. * Add "incremental_prefs" configuration option (close #387). * Change incremental prefs policy, giving snapshots created by btrbk higher preference than the global ones resolved by parent-uuid. * Change "incremental_clones" option to boolean. * Drop support of deprecated raw file format (btrbk < 0.26.0). * Drop support of deprecated "-r, --resume-only" cmdline option. * Fix ambiguous naming in --format=raw output of "list" actions. * Accept quoted values in config. * Use single quotes for raw table output. btrbk-0.31.3 * Add "warn_unknown_targets" configuration option (close #393). * Add -1,--single-column command-line option for listing actions. * Allow relative path command line argument for all actions. * Add support for zstd adaptive compression (close #397). * Add contrib/tools/btrbk_restore_raw.py (close #401). * Minor bugfixes and framework improvements. btrbk-0.31.2 * MIGRATION - Update ssh_filter_btrbk.sh on remote hosts. * ssh_filter_btrbk.sh: Fix security vulnerability. Specially crafted commands may be executed without being properly checked. Applies to remote hosts filtering ssh commands using ssh_filter_btrbk.sh in authorized_keys. * Warn if no subvolume defined in config (close #378). btrbk-0.31.1 * Bugfix: duplicate snapshot location check (close #360). * Bugfix: action "list all" (close #367). * btrbk-mail: optionally prefix command output lines. btrbk-0.31.0 * Add action "extents [diff]": print accurate disk space usage based on block regions (extent data, FIEMAP ioctl). * Improve action "list" and "stats" table output (close #334). * Add subcommand "list all", make default for "list" action. * Change semantics on output of action "list": show only btrbk snapshots/backups (close #333). * Print human readable units in action "diff" (close #345). * Allow custom table format definitions from command line. * Add Bash completion (close #343). * Add support for zstd compression (close #358). * Bugfix: fs_path fallback for action "origin" and logging. * Bugfix: makefile bin-links race (close #341). btrbk-0.30.0 * MIGRATION - In your scripts (e.g. cron jobs, systemd units), replace "/usr/sbin/btrbk" with "/usr/bin/btrbk". * Install to "/usr/bin" instead of "/usr/sbin". * Support IPv6 addresses (close #332). * Add "compat busybox" configuration option (close #327). * Create "lsbtr" symlink (alias for "btrbk ls"). * Improve action "ls" (allow url, bugfixes). * Add "backend_local_user" configuration option. * btrbk-mail: add more elaborated email and rsync options. * Minor bugfixes and framework improvements. btrbk-0.29.1 * Allow multiple path arguments for action "ls". * Change default output to format=short for action "ls". * ssh_filter_btrbk.sh: exclude "btrfs subvolume show|list" from restrict-path (close #309). * Bugfix: fix filter statement match on wildcards (close #311). * Fix regression: print ssh errors only if needed. btrbk-0.29.0 * MIGRATION - If stream_buffer or rate_limit is configured, please install "mbuffer" (version >= 20180505). Note that mbuffer is only required on remote hosts if stream_buffer_remote or rate_limit_remote is set. - In order to mimic old behavior, replace rate_limit with rate_limit_remote, and read btrbk.conf(5). - If you are using table output other than --format=raw in your scripts, note that the column headings changed from pretty two-line to (uppercase) one-line format. Either add --pretty option to mimic old behavior, or adapt your scripts. * Dropped run-time dependency on "pv" (in favor of "mbuffer"). * Combined stream_buffer and rate_limit: for rate_limit, use "mbuffer" (on local host) instead of "pv" (on source host). * Add stream_buffer_remote and rate_limit_remote options. * Use "mbuffer" instead of "pv" for --progress display. * Add stream_buffer functionality for raw targets. * Add action "ls": list all btrfs subvolumes below given path. * Change table output: print single-line, uppercase headings. * ssh_filter_btrbk.sh: whitelist mkdir if -t,--target option is set, used by "btrbk archive" action (close #297). * Bugfix: handle subvolumes with special characters (close #288). * Bugfix: don't display "" in backup summary if volume is skipped by --exclude or noauto (close #291). * Bugfix: systemd: Use WantedBy=timers.target instead of WantedBy=multi-user.target in btrbk.timer (close #293). btrbk-0.28.3 * Bugfix: return exitcode=10 if action skipped by stray subvolumes (close: #285). * Bugfix: correctly handle root subvolumes having uuid. * Bugfix: fix mount point resolving. btrbk-0.28.2 * Fix regression: crash if raw target dir is empty (close #281). * Bugfix: honor incremental_resolve on targets: resolve from mountpoint instead of directory. * Bugfix: handle directories named "0" correctly. btrbk-0.28.1 * Fix regression: crash if deep parent/child relations exceed depth=100 (close #279). * Remove pre-generated man pages, requires "asciidoctor" for builds. btrbk-0.28.0 * MIGRATION - Replace "ssh_port" options with "ssh://hostname[:port]" notation on "volume" or "target" declarations. - Check filter statements in your scripts ("btrbk run "), especially when using groups having the same name as subvolumes. * Fix table format "resolved" (btrbk list snapshots|backups). * Add btrbk-verify: tool for automated backup integrity check based on rsync (close #256). * Use "ssh://hostname[:port]" notation instead of ambiguous "ssh_port" option (now deprecated). * Bugfix: correctly handle multiple volume sections with same host, but distinct port numbers (virtual machines setups, close #233). * Remove selected rows ("*host", "*port") from table output if all values are empty. * Consider all parent/child relations (close #255). * Disallow unrelated parents for btrfs-send if incremental=strict. * Add clone sources to btrfs-send if necessary. * Add "incremental_resolve" configuration option. * Add "incremental_clones" configuration option. * Add "noauto" configuration option. * Add "--exclude" command line option. * Make target_type optional, defaults to "send-receive". * Use more sophisticated filter arguments. * Allow whitespace separated "group" option. btrbk-0.27.2 * Bump dependency >= btrfs-progs-4.12 (as of btrbk-0.27.0). * Trigger autofs mount while resolving mountpoints (close #259). * Bugfix: fix scheduler when overriding "target_preserve_min" in combination with global "target" section. btrbk-0.27.1 * MIGRATION - Update ssh_filter_btrbk.sh on remote hosts if using backend=btrfs-progs-sudo. * Bugfix (regression): call "sudo -n readlink" for backend=btrfs-progs-sudo (close #257). * Bugfix (regression): fix failing "config print" command. * Don't print title and blank lines for --format=raw, syslog and transaction log. btrbk-0.27.0 * MIGRATION - Run "btrbk prune --dry-run --print-schedule" and check if any snapshots/backups would get deleted [1] [2]. If you want to forcibly preserve a snapshot/backup forever, rename it (btrbk ignores subvolumes with unknown naming scheme), e.g.: "mv mysubvol.YYYYMMDD mysubvol.YYYYMMDD.keep_forever" - Update ssh_filter_btrbk.sh on remote hosts (btrbk always calls "readlink" and "cat /proc/self/mountinfo"). * Add "preserve_hour_of_day" configuration option (close #202). * Allow backup of filesystem root using "subvolume ." (close #240). * Add "-S" command line option (shortcut for --print-schedule). * Bugfix: correct scheduling of "first weekly backup in month/year" (close #217) [1] [2]. * Bugfix: add "btrfs filesystem usage" backend mapping (close #222). * Bugfix: do not fail (exitcode=10) if targets are not accessible on "btrfs snapshot --preserve". * Bugfix: if "incremental no" is configured on target, do not keep latest common snapshot. * Enhance internal data structures: - Allow snapshot_dir to be a mountpoint. - Search complete target tree for correlated subvolumes. - Include snapshots from all mountpoints as candidates (disabled due to upstream bug: github.com/kdave/btrfs-progs/issues/96). - Read /proc/self/mountinfo instead of /proc/self/mounts. - Always read /proc/self/mountinfo. - Resolve realpath using readlink(1). * Fallback to "asciidoctor" for manpage generation (close #219). [1] https://github.com/digint/btrbk/issues/217 [2] https://github.com/digint/btrbk/commit/719fb5f btrbk-0.26.1 * Add "archive_exclude" configuration option. * Add warning on redefined configuration option. * Bugfix: fix parsing of "openssl_iv_size" configuration option. * Bugfix: fix filter statement matching for volume=/ (close #209). btrbk-0.26.0 * MIGRATION - If you are using raw targets, make sure to run the "raw_suffix2sidecar" utility in each target directory. * Support for btrfs-progs v4.13.2: adapt parsing of "btrfs sub list" output (close #192). * Add "resume" command, replacement for "-r, --resume-only" command line option (which is now deprecated). * Add "snapshot" command (close #150). * Add "prune" command. * Add "--preserve-snapshots" and "--preserve-backups" options. * Add "--wipe" command line option (close #173). * Change raw backup format (sidecar file instead of uuid in file). * Honor target_preserve for raw targets (delete raw targets). * Add symmetric encryption for raw targets (close #157). * Add "{snapshot,target,archive}_qgroup_destroy" configuration options (close #49, #189). * Do not run in "perl taint mode" by default: remove "perl -T" in hashbang; hardcode $PATH only if taint mode is enabled. * Remove "duration" column from transaction_log/transaction_syslog. * Resolve ancestors (recursive on parent_uuid chain) when searching for latest common subvolume. * Generate man pages from asciidoc (remove raw groff sources). * Bugfix: ssh_filter_btrbk: accept mbuffer command (stream_buffer). * Bugfix: print correct (end-)time in transaction_log. * Bugfix: check path when expanding wildcards (close #181). * Bugfix: never show failed deletes in summary (close #183). btrbk-0.25.1 * Support for btrfs-progs v4.12: fix parsing of "btrfs sub show" output, which now prints relative paths (close #171). * Add "stream_buffer" configuration option (close #154). * Bugfix: accept "no" for "transaction_log", "transaction_syslog" and "lockfile" configuration options. * Show "up-to-date" status for backups in "stats" command. * Show "correlated" status instead of "orphaned" in "stats" command. * Check source subvolumes for readonly and received_uuid flags, and abort if one of them is set. btrbk-0.25.0 * MIGRATION - If you call ssh_filter_btrbk.sh with "--sudo" option, make sure to set "backend btrfs-progs-sudo" in btrbk.conf for this host. - If "rate_limit" is enabled, update ssh_filter_btrbk.sh on remote source hosts, and make sure the "pv" command is available there. * Allow converting backup disks to source disks (close #114). * Add "backend btrfs-progs-sudo" configuration option (close #115). * Show aggregate "size" and "used" for "usage" action (close #119). * Add "raw_target_split" configuration option (close #125). * Allow trailing comments in btrbk.conf (close #129). * Bugfix: rate limiting must be done after compression (close #134). * raw_target_encrypt: Always set "gpg --no-random-seed-file": prevents creation of "~/.gnupg/random_seed" with slight performance penalty. btrbk-0.24.0 * MIGRATION - update ssh_filter_btrbk.sh on remote hosts if "stream_compress" is enabled. Also add "--compress" option to ssh_filter_btrbk.sh invocation if "stream_compress" is enabled. * Add "stream_compress" configuration option. * Perform extra metadata check on target subvolume after "btrfs receive" (adds an additional call to "btrfs subvolume show"). * Bugfix: Replace "realpath" with "readlink" in ssh_filter_btrbk.sh * Add "raw_target_block_size" configuration option (close #105). * Add "backend" configuration option (experimental). * Bugfix: fix "list latest" with no snapshots (close #111). * Support for btrfs-progs v4.8.3: fix parsing of "btrfs sub show" output, which has changed for toplevel subvolume. btrbk-0.23.3 * Replace "realpath -e" with "readlink -e" for mountpoint discovery (close #92). * Dynamically set BINDIR in btrbk.service by Makefile. * Add ChangeLog to DOCDIR in Makefile. btrbk-0.23.2 * Added "lockfile" configuration option and --lockfile command line option (close: #81). * Bugfix: raw targets: correctly handle multiple backups in same target directory (close: #87). * Use relative instead of absolute binary calls in btrbk-mail. btrbk-0.23.1 * Bugfix: set correct parent section when propagating targets (close: #85). * Add syslog output of transaction log (close #82). * Do not print headers to transaction log anymore. * Explain "orphaned" status in "stats" command, and suppress it on "list backups" command (close: #76). btrbk-0.23.0 * INCOMPATIBLE CONFIGURATION: * Please read "doc/upgrade_to_v0.23.0.md" for details on updating the configuration file (/etc/btrbk/btrbk.conf). * Dropped "btrfs_progs_compat" option. Need btrfs-progs >= v3.18. * Removed "resume_missing" configuration option. * Create backups only if needed to satisfy retention policy. * Preserve FIRST backup of hour/day/week/month instead of LAST. * Replaced "{snapshot,target}_preserve_{daily,weekly,monthly}" configuration options with "{snapshot,target}_preserve_min" and "{snapshot,target}_preserve NNh NNd NNw NNm NNy" options. * Added hourly/yearly retention policies (close: #36, #69). * Allow regular directories for send-receive targets (close: #77). * Allow wildcards in subvolume section (close: #71). * Propagate targets defined in "volume" or "root" context to all "subvolume" sections (close: #78). * Added "archive" command (close: #79). * Changed output format of "origin" command, add table formats. * Added configuration option "rate_limit" (close: #72). * Added new timestamp_format "long-iso", having a timezone postfix. * Added "--print-schedule" command line option. * Detect interrupted transfers of raw targets (close: #75). * Always read "readonly" flag (additional call to btrfs-progs). * Warn on receive targets at unexpected location (instead of abort). * On incremental send/receive, use all snapshots sharing same parent_uuid as candidates for "-p " instead of only older snapshots. As last resort, use subvolumes in snapshot_dir matching btrbk file name scheme as candidates (which allows incremental backups after the parent vanished, e.g. after backup restore). * Use perl built-in Time::Local instead of Date::Calc. * Improvements of internal data structures. btrbk-0.22.2 * Bugfix: fix checks on "btrfs sub show" output, which resulted in breakage on btrfs-progs < 4.1 (close: #68). btrbk-0.22.1 * Support for btrfs-progs v4.4 (close: #66). btrbk-0.22.0 * Bugfix: fix monthly schedule if older than 10 weeks (close: #59). * Bugfix: fix sprintf used by config option "timestamp_format long" when using perl-5.22.0 (close: #57). * Bugfix: fix "--progress" option (close: #64). * Added "clean" command (close: #61). * Added "-n, --dry-run" option. * Added configuration options "raw_target_compress_level", "raw_target_compress_threads" (close: #60). * Added "stats" command (close: #54). * Print "$hostname:$path" instead of "{$hostname}$path" in summary and logs. btrbk-0.21.0 * Added transaction log (configuration option "transaction_log"). * Added configuration option "group". * Allow filtering of all commands by group as well as targets. * Added "list backups|snapshots|latest|config|source|volume|target" commands (while removing "tree" command). * Added "config print" command. * Added "--format=table|long|raw" and "-t,--table" command line options, producing tabular and raw (machine-readable) output for "(dry)run", "tree" and "list" commands. * Print scheduler details if -v option is set on action run/dryrun. * Added configuration option "ssh_cipher_spec" (close: #47). * Added "target raw", with GnuPG and compression support (experimental). * Added configuration option "timestamp_format short|long". * Replaced "info" command with "usage", with tabular output. * Bugfix: correctly handle "incremental no" option. * Bugfix: return exit status 10 instead of 0 if one or more backup tasks aborted. * Better error handling for send/receive commands (close: #33). * Hardened ssh_filter_btrbk.sh script: fine-grained access control, restrict-path option, sudo option (close: #45). * Added example cron script. btrbk-0.20.0 * Added configuration option "ssh_port" (close: #39). * Added configuration option "ssh_compression" (close: #44). * Added command line option "--progress" (close: #42). * Bugfix: correct handling of empty "snapshot_dir" (close: #43). * Accept long options on command line. * Documentation: added FAQ. btrbk-0.19.3 * Bugfix: fix sorting of dates in schedule(). * Bugfix: correct parsing of btrfs subvolume list (close: #28). * Support for btrfs-progs v4.1-rc1. btrbk-0.19.2 * Bugfix: fix crash when using btrfs-progs < 3.17.3 (close: #24). btrbk-0.19.1 * Use "cgen" for snapshot comparison. * Bugfix: fix crash in summary display (close: #22). btrbk-0.19.0 * Added "snapshot_create onchange", which skips snapshot creation if the latest snapshot is up-to-date (i.e. has same generation as the source subvolume). * Improved handling of command line subvolume filter for "run", "dryrun" and "tree" actions (close: #21). * Bugfix: fixed crash in action "diff". btrbk-0.18.0 * MIGRATION - update ssh_filter_btrbk.sh on all remote hosts - update configuration file (/etc/btrbk/btrbk.conf): - "snapshot_create_always yes" -> "snapshot_create always" - "snapshot_create_always no" -> "snapshot_create ondemand" * Set PATH variable instead of using absolute "/sbin/btrfs" for compatibility with all linux distros out there, which all install 'btrfs' in different locations (close: #20). * Added configuration option "snapshot_create", replacing option "snapshot_create_always". This allows setups with multiple btrbk instances on several hosts (close: #18). * Added command line option -r (resume only). * Catch and display errors from "btrfs subvolume show". * Include systemd service and timer unit for daily backups. btrbk-0.17.1 * Bugfix: send/receive: delete possibly left-behind garbled subvolume on failure. Fail with unrecoverable error if stray target subvolume is in the way (close: #17). * Bugfix: assume unreachable target as clean on snapshot creation if snapshot_create_always is set (close: #19). btrbk-0.17.0 * New versioning scheme using more common three-level versions. * Code refactoring: cleanup of data structures and handling of btrfs subvolume tree, as well as security related code parts. * Correct handling of symlinks to btrfs subvolumes (close: #12). * Added configuration option "snapshot_name" (close: #5). * Log messages now go to stderr, only the summary is printed on stdout. * Bugfix: allow "0" as subvolume name (close: #10). * Bugfix: allow "/" as volume name (close: #15). * Bugfix: check source AND targets for determining snapshot postfix (close: #11). * Bugfix: fixed "diff" action (colses: #14). * Allow '+' character for subvolume names. * Filesystems on remote hosts are now printed as "{my.remote-host.com}" in summary and logs. btrbk-0.16 * Bugfix: correctly check retention policy for missing backups. btrbk-0.15 * Added configuration option "btrfs_progs_compat", to be enabled if using btrfs-progs < 3.17 (close: #6). * Added configuration option "resume_missing", for automatic resume of missing backups (close: #8). * Removed configuration option "receive_log" in favor of printing errors from "btrfs receive". * Bugfix: show correct exit code on external command failure. * Bugfix: no crash if "commit_delete" option is set to "no" btrbk-0.14 * Bugfix: correctly handle empty target subvolumes (blocker for all new users; close: #4). btrbk-0.13 * Bugfix: allow '@' character for subvolume names (blocker for ubuntu users, since ubuntu prefixes all subvolumes with '@' in its subvolume layout; close: #3). btrbk-0.12 * Cleaner and more generic parsing of btrfs subvolume list. * Bugfix: subvolumes are also allowed for "snapshot_dir" (close: #1, #2). btrbk-0.11 * Added option -p (preserve backups). * Added optional subvolume argument for run/dryrun actions, for explicit selection of subvolumes to be processed. * Bugfixes btrbk-0.10 * Initial revision.