[Dirvish] implementing new dirvish features

Jacki jacki-dirvish at gmx.net
Thu Nov 15 06:17:31 UTC 2007


hello dirvish users and developers

i am an excessive dirvish user and think about implementing some improvements. please let me known your opinion about the following ideas:

###################
# mail generation #
###################

#Background#
a good backup runs automatically and informs you only about the state. the best backup is useless if it fails silently.

#Current state#
no real good reporting mechanism is implemented, many dirvish users implement their own mechanism, partly by greping through the vaults and log files (complicated for new users and error prone)

#Target state#
dirvish generates an configurable mail content, listing all vaults and vault-details like the table below:

vault          runtime   files    status
blue-etc      1h 24min       0   success
blue-home     4min 22s      29   success
blue-svn      2min 34s       0   success
emma-dat       1min 7s       0   error xy
emma-etc           16s       0   success

the columns of the table can be selected by the master.conf
report:
    vault
    runtime
    files
    status
    
please let me known which columns you need and which are important
the column order is defined by the config order - the sorting of the rows need to be discussed.

an option in the master.conf can define an "mail" hook like "pre-client", "pre-server" etc..., which is used to send the mail and generate the subject line user specific. for this several variables are passed $STATE and $MAIL_FILE, with the return value of all "dirvish" commands and a path the mail file


#implementation#
i think this feature can only work with dirvish-runall:
  - dirvish-runall has to create a file at a configured place, with a configured name (configurable by master.conf)
  - dirvish-runall generates the header of the table and passes the filename of the report file to the dirvish command
  - dirvish-runall invokes the mail hook, which sends the mail

#options#
OPT1: dirvish-runall could invoke also "dirvish-expire" and pass the report file to it. "dirvish-expire" also reports to the file, possibly better formated then in the current implementation. naturally the invokation of dirvish-expire is an option of dirvish-runall defined within the master.conf and/or by a command line option

########################################
# dirvish-runall runs dirvish parallel #
########################################

#current state#
dirvish-runall process all vaults like listed in master.conf under "runall:". this not fine, if you backup over a speed-limited and not so reliable connection. a "big" backup in the middle of the list blocks "small" backups at the end. especially if the connection is lost.

#target state#
all vaults within the "runall"-list are processed parallel, the maximum number of processes can be limited by an option in master.conf. for instance "runall-parallel: 3"
with "runall-parallel: 1" its the same like before
with "runall-parallel: 5" five vaults are backuped parallel at maximum, and if there are two "big" ones - no problem
with "runall-parallel: -1" every "dirvish" command gets its own process

#implementation#
should be no problem with the perl "fork" and "wait" functions
the "mail" generation could also be done - but sorting is an issue!

"runall-parallel: 1" should stay default for backward compatibility

####################################
# selectable interpreter for hooks #
####################################

#current state#
there are 4 hooks "pre-server", "pre-client", "post-client" and "post-server"
these commands are executed by /bin/sh

#target state#
an master.conf option defines the interpreter /bin/bash -c or /bin/whatever --option

#implementation#
should be no problem
the variables like "$DIRVISH_IMAGE" could be replaced by the value directly by "sed" (the perl one)

/bin/sh should stay default for backward compatibility

#########################################
# dirvish-runall vaults on command line #
#########################################

#current state#
dirvish-runall executes dirvish on all vaults within master.conf and "runall:"
if you split your backup, for instance in daily backups and weekly backups, you have to do one the invokations by hand

#target state#
a command like "dirvish-runall /srv/backup/daily/*" executes dirvish on all vaults in "/srv/backup/daily/"
a command like "dirvish-runall /srv/backup/weekly/*" executes dirvish on all vaults in "/srv/backup/weekly/"
a command like "dirvish-runall" executes dirvish on all vaults specified in master.conf

#implementation#
adjust the command line option scanning

#####################
# summary           #
#####################
i am willing to implement these features - who whats to update the documentation

thanks for your feedback
jacki
-- 
GMX FreeMail: 1 GB Postfach, 5 E-Mail-Adressen, 10 Free SMS.
Alle Infos und kostenlose Anmeldung: http://www.gmx.net/de/go/freemail


More information about the Dirvish mailing list