Release 1.3.5 (Sun 30 Jun 13:06:00 CEST 2024) * rdw2: corrected a couple of erroneous calls to reset_error_stack() Release 1.3.4 (Thu 27 Jun 11:18:23 CEST 2024) * rdw2: ported support scripts to miniade 0.2.15 Release 1.3.3 (Tue 25 Jun 08:29:40 CEST 2024) * rdw2: disabled ZFS and BTRFS backup methods as, when writing to USB disks (and that is all that I do) they are not reliable * rdw2: fixed a missing miniade_ prefix Release 1.3.2 (Fri 14 Jun 09:19:07 CEST 2024) * rdw2: minor correction to a test (mkdir fixed-name without rmdir caused failure on rerun) * rdw2: ported to ade 2.2.10 * rdw2: usage functions now return 0 and write to stdout * rdw2: switched to generated rdw2devsh.sh * rdw2: more fixes for miniade 0.2.7 * rdw2: fixes for miniade 0.2.7 * rdw2: corrected weekly backup schedule (was twice daily) * rdw2: schedule development at home to allow actual development at work Release 1.3.1 (Tue 13 Feb 12:00:35 CET 2024) * rdw2: ported to miniade 0.2.3 * rdw2: method scripts were not respecting $RSYNC_CMD, $UNISON_CMD * rdw2: disabled backup sets get crontab entries but commented out (rather than just a comment saying set disabled) Release 1.3 (Fri 12 Jan 14:30:42 CET 2024) * rdw2: updated a test's reference file due to comment removal changing line numbers in expected output (i.e. cosmetic) * rdw2: fixed bug whereby 'rdw2 --list-medium-accesspoints' was listing also disabled media * rdw2: ongoing work on zfs backup method scripts * rdw2: after seeing how badly btrfs performs and the number of checksum errors when copying USB-btrfs to USB-btrfs, I added comparable zfs-based backup scripts. * rdw2: remove larged commented-out function * rdw2: more sql-errmsg-to-normal-errmsg token substitutions * rdw2: removed duplicate table in sql * rdw2: make two identical error messages slightly different to aid tracking down a bug (which I might never see again) * rdw2: don't delete temporary crontab if automatic update not possible (in order than the error message's hint to manually install the temporary crontab can be acted upon) Release 1.2 (Wed 20 Dec 14:19:18 CET 2023) * rdw2: retweaked tests after implementing database upgrade function * rdw2: implemented database upgrade function * rdw2: some but not all checks updates based on new database schema * rdw2: further align rdiff-backup with other methods * rdw2: minor corrections to btrfs-based backup methods * rdw2: ongoing work to support btrfs-based backup methods * rdw2: better align backup methods * rdw2: ongoing work on adding btrfs-based backup methods * rdw2: starts work on adding btrfs-based backup methods Release 1.1.4 (Sun 26 Nov 15:45:45 CET 2023) * rdw2: tests now use '--no-update-cron' to suppress complaints about crontab not being writable * rdw2: added option '--no-update-cron' * rdw2: corrected bug whereby rdiff-backup-one-fs was crossing filesystem boundaries * rdw2: use non-standard PROGNAME in example scripts to make clear that they're the example scripts * rdw2: fixed a couple of typos * rdw2: rewrote crontab-management code for WP#188 * rdw2: make substitutions on a contraint error message * rdw2: starts work on WP#189 Release 1.1.3 (Wed 20 Sep 12:43:56 CEST 2023) * rdw2: updated *all* support scripts to use miniade * rdw2: starts work on fixing calls to /usr/bin/rdiff-wrapper replacement script Release 1.1.2 (Tue 1 Aug 09:23:11 CEST 2023) * rdw2: corrected minor typo in man page Release 1.1.1 (Tue 20 Jun 12:18:24 CEST 2023) * rdw2: updated label-tool to use miniade in possible-remote executed code * rdw2: added missing svn properties to example scripts * rdw2: prevent make-ing in example directories * rdw2: switched from own msg.sh to miniade * rdw2: more version changes on local rdiff-backup script * rdw2: updated msg.sh and check for zfs filesystems * rdw2: added example scripts * rdw2: preparing to add example scripts on damson (needs UNRELEASED header above) Release 1.1 (Thu 30 Mar 15:38:52 CEST 2023) * rdw2: allow methods to be overridden in /etc/pcms * rdw2: rdiff-backup* backup methods respect env vars RDIFFBACKUP_CMD and RDIFFBACKUP_OPTS (to be set by other methods) * rdw2: fixed cosmetic '//' dir separator problem recently introduced with new function resolve_if_exists() * rdw2: fixed use-before-assign bug recently introduced with new function resolve_if_exists() * rdw2: fixed longer-standing but went-unnoticed bug whereby backup_dle() didn't wait for backup method to complete and in the process correctly let callers know if backup failed * rdw2: made load_config() more robust by not accepting all directives in config file Release 1.0.7 (Mon 20 Mar 16:29:52 CET 2023) * rdw2: updated msg.sh from other modules (twice) Release 1.0.6 (Sun 5 Feb 10:02:43 CET 2023) * rdw2: corrected typo in usage message Release 1.0.5 (Fri 26 Aug 14:47:14 CEST 2022) * rdw2: added svn properties to new files * rdw2: starts work on WP#174 Release 1.0.4 (Mon 28 Mar 12:33:01 CEST 2022) * rdw2: further fixes required by work for WP#176 * rdw2: corrected a test * rdw2: added missing svn properties * rdw2: merged in WP#176 work into trunk * rdw2: completely reorganisation of labellers (closes WP#176) * rdw2: partial reorganisation of labellers for WP#176 * rdw2: fixed bug whereby medium access error was not propogated upwards (closes WP#173) * rdw2: beginning of test for WP#174 Release 1.0.2 (Wed 2 Feb 13:02:48 CET 2022) * rdw2: replace %{CLIENT_ID} marker when adding DLE (closes #168) * rdw2: read, process and display backup method's output as soon as the method writes it, rather than only when the method exits (closes #170) * rdw2: starts work on #168 and #170 Release 1.0.1 (Sun 2 Jan 22:27:04 CET 2022) * rdw2: removed function unlink_quietly(), which was in use by ade! Release 1 (Fri 20 Aug 17:00:05 CEST 2021) * rdw2: bumped to release 1 Release 0.99.5 (Tue 17 Aug 11:03:57 CEST 2021) * rdw2: triggered by pestaroli & testaroli's rdiff-backup being too new to be backed up by damson, removed double colon on local target directory on rdiff-backup helper script (see BTS#992325) Release 0.99.4 (Sun 15 Aug 18:39:51 CEST 2021) * rdw2: removed setting PCMS_PREFIX (this seems to screw up installation of man pages) * rdw2: database upgrade now also delegates to ADE * rdw2: exported many SQL-related to ADE * rdw2: removed all trailing spaces * rdw2: detect combinations of absent/present database and absent/present server on-disk label; closes #141 * rdw2: removed duplicate return * rdw2: starts work on #141 Release 0.99.3 (Thu 17 Jun 10:01:59 CEST 2021) * rdw2: improved verbosity during backups and checks of dles and sets (closes #137) Release 0.99.2 (Mon 14 Jun 11:12:02 CEST 2021) * rdw2: tidied up crontab/crontab.bak code (closes #119) Release 0.99.1 (Sat 12 Jun 13:03:36 CEST 2021) * rdw2: path corrections * rdw2: updated for perlcritic and ADE 1.99.3 (which is perlcritic compliant) * rdw2: changed state to unreleased in order to allow ongoing development on damson Release 0.4.2 (Fri 12 Mar 13:31:31 CET 2021) * rdw2: added config variable rdw2_server_flag, which is disabled by default to prevent rdw2 clients from creating databases, just because they jabe rdw2 installed as part of the same package. Release 0.4.1 (Thu 11 Mar 19:28:27 CET 2021) * rdw2: corrected command that gets called in rdw2-check.crontab Release 0.4 (Thu 11 Mar 17:38:14 CET 2021) * rdw2: don't install /etc/cron.d/rdw2-check symlink automatically (it makes non-root test installations break) * rdw2: updated a test reference file * rdw2: added missing doc/examples/Makefile * rdw2: addition of rdw2-check and reorganisation of location of crontab (starts #93) * rdw2: backup database before upgrades (closes #82) * rdw2: when adding a new medium warn (previously was info call) that grants need to be added to make it usable (closes #84) * rdw2: fixed bug whereby some placeholder text was not replaced when adding a dle whose dle-id was new but whose client-id:dle-accesspoint pair was not (closes #89) * rdw2: df-in-dleap.sh checks if dir is / to avoid double-/ problem (closes #116) * rdw2: check_set and backup_set now don't recheck DLEs that failed for reasons that affect multiple DLEs (closes #85) * rdw2: updates to tests folowing switch to database schema 3 * rdw2: updated database diagram * rdw2: added 'coding: utf-8' comment to all python scripts * rdw2: changed from %s to %d in to format verboselevel * rdw2: minor fix in the commandlines generated by --gen-cron * rdw2: improved filtering (closes WP#88) Release 0.3 (Thu 6 Aug 16:03:20 CEST 2020) * rdw2: check label's directory's parent directory exists before attempting to create a label (closes WP#77) * rdw2: reverted to very slightly modified #2 of database when I realised that #2 of the database already had the 'filters' code in * rdw2: added version #3 of database and associated upgrade function * rdw2: moved 'X: no such Y' checks into rdw2_lock_row() * rdw2: commented out several (unexpectedly) uncalled functions * rdw2: rdw2 now uses its own sql_execute_qm() function on order to do error message tweaking (this should eventually be moved to ADE) * rdw2: shorten long ssh error messages * rdw2: implemented noop backup method (sleep 30) * rdw2: updates man page with details of filters. * rdw2: test reference file updates for some recent changes * rdw2: implemented filtering of backup method's output (closes WP#69) * rdw2: added upgrade function (closes WP#80) Release 0.2 (Mon 20 Jul 12:08:47 CEST 2020) * rdw2: finished correcting man page (closes WP#65) * rdw2: minor corrections to get tests passing * rdw2: widened more columns, changed help text to better match man page * rdw2: allow '--list-misc' to take an optional pattern, like other --list-* options * rdw2: further man pages updates for WP#65 * rdw2: removed README.Alexis (closes #66) * rdw2: converted the 'now grant access to this medium' warning to an informational message (attempts to back up already produce a similar message) * rdw2: widened client and server name widths * rdw2: ongoing work on the man page (first complete version with errors) * rdw2: starts work on WP#65 Release 0.1.99 (Wed 8 Jul 14:03:45 CEST 2020) * rdw2: updated a call to cursor.executescript() in line with what apsw module provides * rdw2: finished adding svn properties * rdw2: started adding svn properties * rdw2: stopped calling wrapper_sql_() functions as those were needed only in establishing that I need to switch to apsw * rdw2: added a database busy timeout of 10s (hopefully closes half of #68) * rdw2: added better padding of schedules in output of 'rdw2 --list-misc' * rdw2: switched to apsw python module (closes #63) * rdw2: attempted to make edit() perform the empty-database plus load-database in a single transaction (addresses #63; the code works fine if you don't run 'CTRL-Z; kill -9 %1') * rdw2: attempting to backup a dle with a disabled method is now an error (closes #61) * rdw2: check set exists before trying to back it up (closes #56) * rdw2: check dle exists before trying to back it up (closes #58) * rdw2: for #59, added assert_in_transaction() to add_client() * rdw2: improved display of ssh check output (closes #55) * rdw2: quietened a debug message * rdw2: many --{add,del}-* commands had gone back to being multi-transactional (which made --add-dle with an already labelled dle fail on the *second* call with the message "already in database" or some such). Switched these back to single transactional. * rdw2: temporarily switched from ade.ade_sql_*() functions to wrapper_sql_*() functions in order to diagnose a locking problem * rdw2: switched from deferred transactions to immediate transactions to resolve locking issue; for details see https://stackoverflow.com/questions/55831645/how-does-sqlite-prevent-deadlocks-with-deferred-transactions (specifically the hints at the bottom of the answer) * rdw2: merged several '--list-*' options into '--list-misc' * rdw2: add '--force' option to allow editing when database in use but not locked * rdw2: minor adjustments to schedules to avoid current Vodafone probs * rdw2: massive row locking code refactor * rdw2: overwrite session labels with a warning * rdw2: moved all real code from option handlers (i.e. mode_X()) to new functions X() in order to create a single function call whose error return needs to trigger row unlocking. (Previously there were *multiple* return points, each of which required calls to the - sometimes complex - row unlocking code. Now there is a a single block of such code for an error return (with new error stack to avoid contaminating the error stack) and a single success return. * rdw2: corrected missing null values when inserting sets/dles/... due to new lock column * rdw2: crontab generation no longer writes adedevsh, as we now use stock ade * rdw2: added update triggers for row locking * rdw2: minor corrections to get things working * rdw2: ongoing edits to the row locking code * rdw2: commit before mode_edit() rewrite * rdw2: allow other DLEs to be checked/backed-up after an earlier DLE failed check/backup. * rdw2: allow DLE labelling method df-in-dleap on dir-one-fs DLEs * rdw2: fixed 'buffering from cron causes messages in wrong order' bug * rdw2: demoted several internal errors to normal errors * rdw2: don't lock DB with transaction for --list-* and --gen-cron (remember that other 'quick' commands line --{add,del} *do* require transactions in order to roll back on error) * rdw2: corrected argument order on --add-dle (DB, code and table columns all in different orders) * rdw2: added new media accesspoint inspector method 'find-map-in-mounts', which looks through mounts. * rdw2: more triggers to trap insert errors with better messages * rdw2: added DLE, set and edit locking * rdw2: got tests working again, except for help text check (help text is way too wide) * rdw2: converted all SQL to here documents and abstracted associated tuples to variable sql_value * rdw2: reordered and renamed functions * rdw2: ongoing work (moved schedules to different table; added rudimentary lists of backed up files) * rdw2: ongoing work to make it actually do a backup * rdw2: added '--backup-{set,dle} and they almost work! * rdw2: reworked a few functions added --list-{dle,set}-media and --list-media-accesspoints and list-medium-accesspoint * rdw2: completed --{add,del,list}-dle[s] * rdw2: completed trigger rewrite, tidied code, unmerged the {add,del,list}-{server,client} functions pairs, '-v' now shows medium/client/server labels * rdw2: ongoing work - committing prior to triggers rewrite * rdw2: completed --del-medium * rdw2: completed --add-medium and reorganised methods directory * rdw2: minor database changes: command added to *methods tables so command is no longer forced to be the same as the id); removed enabled attribute from servers table; ensure maximum one row in servers table. * rdw2: started work on --add-medium (notes added to README.Alexis) * rdw2: centred diagram in rdw2.dia * rdw2: implemented --list-types, --{add,del,list}-client[s] and wrote client [un]labelling script * rdw2: ongoing work (added accesspoint_inspection_methods and associated more general '--list-methods' option * rdw2: implemented --{add,del,list}-set[s] * rdw2: ongoing database design * rdw2: added entity relationship diagram for database * rdw2: improved tests * rdw2: writing some basic tests (db creatable, db init file loadable) * rdw2: implemented '--edit' and '--db-file' options * rdw2: removed unwanted files, added missing svn properties * rdw2: created module