ToDo

- check if file date/permission/owner/group is correct
- internal pipeling of commands for e. g. repacking, remove/add encryption
- support ssh-agent (extend libssh2?)
- improve password quality checker
- Windows port
- re-read configuration when modified
- configure band-width on run-time
- send-only ssh-login (possible?)
- avoid negative bytes/s in performance monitor
- multiple instances of backup threads
- store partitions which are mounted ("on-the-fly-freeze")
- md5 file check sum?
- delete temporary image directory when writing dvd
- support for config reload with SIGHUP
- support for rmt? (tape control tool)
- barcontrol: file separator character
- remove "Function" in lists.h types
- general handling of strings containing LF, CR..
- progress bar when writing CDs
- when writing a DVD do not write more data then given volume size, e. g. 4*1G<=4G, do not write 5*1G
- dvd: eject last disk
- disable CTS in crypt and fill last block with random data: this avoid that the
  blocks are reordered because of CTS (block n and n-1 are exchanged!) and blocks
  must be written and read with identically buffer sizes! For writting single blocks
  CTS is not used anyway
- -pedantic -std=gnu99
- define max. number of concurrent connections to sftp/scp host
  including background index thread; pause index thread on demand
- execute VACUUM on database/enable auto-vacuum?
- combine full-backup and incremental-backup into new full-backup
- limit used bandwidth when creating index (all data is transmitted?)
- configure check for LIBSSH2_SEND_FUNC, LIBSSH2_RECV_FUNC
- support for password wallet KWallet, GnomeKeyring
- support Windows Volume Shadow Copy Service
- rsync protocol
- copy job does not copy all values
- track deleted files and delete them on restore, too
- add --depth like find
- option to follow links
- optimize: use counters for files/skipped/error etc. for each thread
  separated; accumulate in server client thread to avoid locking
- check if exclude compressed files work
- multiple jobs in parallel
- clients executing jobs from command server
- support bar dvd://*.bar
- restore image to file instead of a device
- compression lrzip
- compression miniz
- database lock timeout?
  http://beets.radbox.org/blog/sqlite-nightmare.html
- higher thread priority for collector thread?
- max. number of jobs to keep
- pre/post-process filter for single entries
- read/write tar-format at stdin/stdout for pipeling
- option to select ctime or mtime
- doc: ext4
- doc: encrypt algorithms
- barcontrol: create .bid only
- create .bid from specific date
- option --tmp-min-free
- FSE compressor https://github.com/Cyan4973/FiniteStateEntropy
- delete job/schedule entry in barcontrol when file is deleted
- barcontrol: show for each directory total size+included size
- tape library support
- NDMP
- Reed Solomo Codes for file protection and recovery
- restore with stripping some/all directories
- skip leading directories on restore
- decrementell backup
- store flag for changed files while storing
- support for caching files standard
  http://www.brynosaurus.com/cachedir/
- barcontrol: add shortcut DEL to delete entries
- progress on console when storing archives
- barcontrol: compare of archives
- check if crypt password is correct, output error message
- test archives: CRC? fragments?
- fix error message when connection is refused
- BARControl: show warning when path does not exists
- create an error message when /tmp is full
- bash complete: /etc/bash_completion.d
- barcontrol: improve busy animation
- database entity: store host, run time
- clean-up: storageName/archiveName, file path/directory/name
- test with archive with unknown/invalid compression algorithm
- ERROR: Cannot create process id file 'test/barserver.pid' (error: No such file or directory)
- support partclone
- use e2fslibs
- improve BARControl progress dialogs: refresh index, remove index
- remove BARServer.fileSeparator
- support min/max keep for job, max. age for job
- BARControl restore: filter storages by "will never expire"
- pepper for encryption?
- multi-encryption
- set job to error if not enough inotify watches
- server settings: set max. number of inotify watches
- Restore: filter storage by "no expiration date/time"
- use kwalletcli to store/retrieve passwords
- use GNOME secret-tool
- BARControl: delete schedule entry -> update context menu in job status
- systemd script: restart
- logrotate: use signal HUP
- job settings for max./keep until normal/full/incremental/differential storages
- restore: ask for overwrite, skip, overwrite all, skip all
- check: restore content work?
- use libssh instead of libssh2 because newer releases/fixed memory leaks?
- BARControl: password input field invisible number of characters
- filesystem support: partclone
  sudo apt-get install libext2fs-dev
  sudo apt-get install libreiser4-dev
- BARControl: restore dialog: progress bar for processed storages, estimated
rest time
- hierachical jobs
- test after create: chunk-read, test, compare
- scheduler to test archives with report
- BARControl: test archives function
- option to local cache of archive before parallel test/compare/diff
- single input of encrypt password for parallel test/compare
- maintenance if no schedule pending for x minutes
- BARControl: restore: show archive for file entry
- option --no-auto-pairing
- slave: send log file mail on master
- job option: do not schedule missed job executions
- bar-index: verbose by default, option --quiet
- check: schedule change work with new time?
- continuous jobs: option to discard backup changed files in case of an error
- check if time()/gettimeofday() is 64 bit safe
- gnutls 3.7.x: add support for brotli compression in gnutls
- support brotli compression, https://brotli.org/
- add libpsl for curl
- call prctl+clear PR_SET_DUMPABLE
  https://en.wikipedia.org/wiki/Ptrace
- BARControl device list: file system type
- entity UUID in archives
- bar-index: password option
- use MongoDB for full text search
- BARControl: show installed slave versions
- BARControl: graphical history of job execution
- reload configuration on SIGHUB
- backup set info file
- multiple job execution
- remove constraint from storages table
- program icon
- storage: remove running info
- send email with log on maser for jobs executed on slave
- restore: skip leading directory
- barcontrol: graphical job history
- purge backup archives on exhausted free disk space
- code formater
- coding style guide
- support continuous jobs for slave
- assign-to progress update
- test+compare in job dialog
- option to skip missed jobs
- verify signatures+list archive does not work with webdav
- continous jobs for slaves
- barcontrol: show installed slave versions
- run pre/post command in standard mode (not only server)
- BARControl: menu entries for Debian, XFCE
- incremental/differential backup: save/show base backup UUIDs
- sqlite3 recover -DSQLITE_ENABLE_DBPAGE_VTAB



Log post process 'sh -c 'cat %file|mail -s "BAR Backup log" torsten.rupp@macio.de''...Execute command 'sh -c 'cat /media/backup/tmp/bar-bnk7kI/log.txt|mail -s "BAR Backup log" torsten.rupp@macio.de''...ok
Mon 02 Feb 2015 05:47:11 PM CET> Start job 'shares'
Mon 02 Feb 2015 05:47:35 PM CET> INDEX: Done clean-up database
Mon 02 Feb 2015 05:48:59 PM CET> 31 entries/1947682 bytes(s) included, 2 entries skipped, 0 entries with errors
Mon 02 Feb 2015 05:49:00 PM CET> Aborted job 'shares'


https://lists.samba.org/archive/samba-technical/2008-July/060155.html
