aboutsummaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
authorEinhard Leichtfuß <alguien@respiranto.de>2019-10-18 00:28:00 +0200
committerEinhard Leichtfuß <alguien@respiranto.de>2019-10-18 01:17:39 +0200
commit4e2ceb9875c81c33b09f6eaf0858b7f9591b22cc (patch)
treebe3860dc8c26b3c18a30c2a81b58e00025b98069 /TODO
parent51f58d7c4c984ec8ccc5ab0a3d31d04cd39d499c (diff)
Restructure, and rewrite substantial partsHEADmasterdevel
A notable problem (to me) with the former version was, that upon simple movements in the source file tree, these would in general cause duplicated data in the backup forest. This problem has been resolved by essentially tracking file movements, using hard links. Also, the code has been divided into several different files, extranous code removed, the organization of remote code execution simplified. In the process of simplification, all parts requiring direct interaction of the user with the program have been replaced. In most cases, this means that the program now just terminates with an error instead of allowing the user to confirm deletion of an unexpected (remnant) file. This may be considered a drawback, but actually these interactive options were anyways suboptimal solutions in most cases - where they occured, which was due to remnant files of aborted or failed former backups. In general, there have been a lot of changes. Which are not thoroughly documented here. Since there is often no strong relation to the old code, this is not deemed necessary, as the in-code documentation is expected to be of sufficient help. Also, there has been added a little general documentation in the README and particularly the NOTES file. It is to be noted that this new version is far from sophisticated. It has been tested with and is in use for real data, however lacks a lot of convenience. In particular, if a backup fails unexpectedly, the next backup will in the very most cases loudly fail without manual intervention. Also, the program is not able to continue the growth of a backup tree built with former versions of this program, by itself. This can however be arranged by hand.
Diffstat (limited to 'TODO')
-rw-r--r--TODO29
1 files changed, 26 insertions, 3 deletions
diff --git a/TODO b/TODO
index caa934b..142a7bb 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,8 @@
# -- BUGS -- #
+- /path/ is not recognized as configured, when only /path explicitly is
+ configured.
+- After a failure, the .backup directory is in a bad state (contains backup
+ data labeled as old, however not related to the destination).
# -- TODO -- #
- For ssh, set up one single connection (maybe configurable?).
@@ -6,13 +10,11 @@
-oControlMaster=yes \
-oControlPersist $remote /bin/true
`- ssh -oControlPath=/tmp/root-readable/something.sock
-- Replace echo by printf(-functions).
- Set up default configuration file.
- [consider] When installing, copy the config file to both /etc and
/usr/share, such that sourcing from the latter location removes the need to
specify default options in the script itself.
- Test for read/write access at some point.
-- Better error reporting.
- Use autotools.
- Per dirpath rsync_args.
- Allow for resuming of backups.
@@ -21,7 +23,7 @@
`- Not a good idea if a notable amount of time passed.
`- [question] What happens in case of partially transferred files?
`- --delete-during, --delete-excluded
-- Shell completion of configured backup paths.
+- [consider] Shell completion of configured backup paths.
- Better error handling on failure (of rsync).
- Use ask().
`- Allow for configuration of default answer.
@@ -29,6 +31,12 @@
- [consider] Get date on source host.
- Named backups to allow for different destinations per source (and shorter
names).
+- Test suite.
+- Check for several file systems in a tree (and error upon locating such).
+- [consider] Add fallback if no local mirror of the source file tree is
+ available.
+- Only store the last mirror locally, but date it.
+- [consider] --one-file-system as default option.
# -- PROBLEMS -- #
- rsync bug: https://bugzilla.samba.org/show_bug.cgi?id=13445
@@ -56,3 +64,18 @@
`- For now, -v or -vv in rsync_args should work fine.
- non-intercative option.
- rsync_network_options (when remote src or dest, e.g. for --compress).
+- Write metadata.
+- Use wrappers for the functions possibly non locally executed.
+- Compare src:work/$old_date and dest:$old_date for consistency.
+- Run script instead of function remotely
+ `- ssh host 'bash -s' -- < script_file args
+ `- In case of dependencies, the otherwise sourced files could just be
+ included in the stdin of ssh.
+ `- cat script_file dep_file | ssh host 'bash -s' -- args
+- Use stdout of functions to return a string value and stderr for everything
+ else.
+ `- Optional: Prefixes determining whether normal or error.
+ `- Convert at the end (remove prefix and pipe to stderr / stdout).
+- Only keep the respectively latest backup on the source.
+ `- Or the last two, which would allow to reuse the second-last as new
+ mirror (for a probably negligible gain, if any).