6. Configuration Parameters and Command Line Options

ISiBackup is a bash script and therefore can be easily parametrized using normal bash syntax. The configuration files (the main one is called isibackup.conf and the individual ones per set are called set.conf) are "sourced" so the may actually contain program logic instead of just configuration parameters, although I disencourage that ;-)

The next table lists the configuration parameters in alphabetical order and gives the point of their first definition as "given" (when part of the program code), as "main" (when part of the configuration file isibackup.conf) or as "set" when part of the set definition set.conf. As the order of inclusion is "given - default - set", any "given" parameters can be overridden in isibackup.conf, and any "given" and "default" parameters can be overridden in the "set" configuration.

Table 2. ISiBackup Configuration Parameters

NameCommand line optionDefault value or value rangeExample valueFirst definition (given, default, set, command line)Description
AUTHORSWritten by Marcus Holthaus and Simon Huerlimann.givenA String describing the authors of this program
AUTO_FULLtruetrue | falsemain, setConsider you are creating a differential backup. A differential backup is only useful if you have the full backup that contains the files that were modified before the start date of the differential backup. So if there is no full backup of the same set available, should isibackup create that instead of the differential backup?
BACKUP_ROOT/var/backups/isibackup/mnt/isibackupgiven, main, setBackup target root directory, to be used as part of target names..
CMD_CUTcutgivenCommand to cut fragments out of strings.
CMD_CRYPTgpgpgpmain, setWhat method should be used for encrypting the generated backup files? If this option is an empty string, the backup will not be encrypted. If it is gpg or pgp, the respective program will be used (while pgp is not implemented yet), and the encryption key (or recipient key) will be the one set with CRYPT_KEY
CMD_DATEdate -IgivenCommand used to create an ISO compatible date string.
CMD_DATE_FULLdate "+%Y-%m-%d-%H-%M-%S"givenCommand used to create a full date including hour, minute, second
CMD_FTPlftpgivenCommand used for FTP up- and download (actually, this must remain lftp unless there is another command that understands lftp command line syntax)
CMD_HOSTNAMEhostname -fgivencommand to determine the fully qualified hostname
CMD_LOCKFILElockfilegivencommand to create a lock file
CMD_PACKcpio | cpio.bz2 | cpio.gz | cpio.zip | tar | tar.bz2 | tar.gz | tar.zip | rar | zoo | zipmain, setWhat method sould be used to collect and to compress the backup files? You may wither select a collector (cpio, tar) with an optional compressor (bzip2, gz, zip) , or a combined method (rar, zoo, zip). Please note that while rar and zoo do collect and compress as well as zip, ony zip has been implemented as independent compress-only method.
CMD_PRUNEisiprunegivenisiprune is a tool from the isitools package that is used to delete empty subdirectories from a backup directory.
CMD_RSYNCrsyncgivenCommand used for rsync (actually, this must remain rsync unless there is another command that understands the rsync command line syntax)
CMD_TEMPFILE$(tempfile -s "$PROGRAM_IDENT")givenProgram used for generating temporary file names.
CMD_TRtrgivenCommand to transcode strings
COPYRIGHTCopyright (C) 1999-2004 IMSEC GmbHgivenCopyright string
CRYPT_KEY-k|--key {key}$(NET) Backup $(date +%Y)Domain Backup 2004main, set, command lineThe identification string of the key that shoudl be used as the recipient key for the backup target files. Of course, CMD_CRYPT must be set to enable encryption. Furthermore, the preferred encyption method must be available (commands pgp or gpg), and the public key must be part of the locally installed keyring of the user that is currently running ISiBackup. Please note that while you definitively need the private part of the key for decrypting and restoring the backup, you do not need the private key while backing up - it need not be on the system being backed up.
DEF_BLOCKSIZE48givenDefault size of one directory in blocks. Directories occupy space on the target drive as well and this factor assumes that one directory uses an average of 4 blocks.
DEF_PACKEDBLOCKSIZE12givenDefault size of a packed directory name. Normally a packed directory name with all the other information occupies much less than a kByte, but 1 is the minimum of this value and therefore includes some reserve.
DELAY03sgivenDelay for debugging purposes. At several locations in the program, statements like sleep $DELAY have been inserted. When starting isibackup with set -vx, this allows for debugging of dealyed functions.
DIR_PERMS2770755givenThe permissions of the directories inside the backup. Normally, the "s" flag is set (hence the 2 at the beginning) so that newly created subdirectories inherit the target's permissions and ownerships.
DIR_PERMS_SETtruetrue or falsemain, setIs ISiBackup allowed to set the permissions of target directories? This should be set to false whenever the target directory does not support permissions (i.E. VFAT or smbfs) or when the upload is being done as a user that must not set permissions. Otherwise, it should be left as true
DIRLIST_ENTRY###isibackup-dirlist###given"Escape" string used as one of the input file names, in order to create an otherwise empty output archive with all of the directories attributes and ownerships.
FILE_PERMS660644givenThe permissions of the files inside the backup.
FILE_PERMS_SETtruetrue or falsemain, setIs ISiBackup allowed to set the permissions of target files? This should be set to false whenever the target directory does not support permissions (i.E. VFAT or smbfs) or when the upload is being done as a user that must not set permissions. Otherwise, it should be left as true
FILE_RSYNC_LOG/var/tmp/isibackup.1234givenInternal name of the temporary rsync log. The rsync log is not just being added to the ISiBackup log, but it is stored in here first, and only after the termination of the rsync process, it is appended to the isibackup log. Don't change this.
HOST$(hostname)elephantgivenThe host name of the host that this ISiBackup is running on. This can be used as part of the name of the backup directory location. Hence, backup directories can be named depening on the name of the host.
IDENT_GROUP_BACKUPbackupwheelgivenThe later group owner of the backuped files in the target directory. This can easily be overridden in the main configuration file or even on a set.conf basis. However, the backup group is an appropriate group owner of this file (pending: check the debian policy for this)
IDENT_GROUP_SETtruetrue or falsemain, setIs ISiBackup allowed to change the group owner of target files? This should be set to false whenever the target directory does not support group ownerhips (i.E. VFAT or smbfs) or when the upload is being done as a user that must not or cannot change group ownership. Otherwise, it should be left as true
IDENT_USER_SETtruetrue or falsemain, setIs ISiBackup allowed to change the owner of target files? This should be set to false whenever the target directory does not support ownerhips (i.E. VFAT or smbfs) or when the upload is being done as a user that must not or cannot change ownership. Otherwise, it should be left as true
ISIBACKUP_CONF/etc/isibackup.confgivenName of the main configuration file.
ISIBACKUP_SET_CONFset.confgivenName of the set configuration file
LIABILITYThis program comes with NO WARRANTY, to the extent permitted by law.givenLiability restrictions
LOCKDIR/var/lock/tmpgivenThe directory where lock files should be placed. Normally, lock files will be placed inside /var/lock, but as ISiBackup need not be executed as root, and as non-root users normally cannot write into /var/lock, it is failsafe to put it in /tmp (well, almost). Of course, this does not catch the case where a root and a non-root user execute the same backup set simultaneously - this might lead to trouble. (pending).
LOCKFILEhost.domain.com.isibackup.all.locksomething.lockgivenThe name of the lock file. It should be distiguishable from other lock files and its name may well be speaking.
LOCKTIME864000172800givenMaximum time the backup of a particular set runs exclusively. After that, the lock times out and another backup of the same set is allowed (which is not healthy at all). Upon normal termination, ISiBackup removes the lock file, so that after the end of an ISiBackup run another ISiBackup may start running immediately.
LOG_DIR/var/log/isibackup/mnt/isibackupgiven, main, setName of the directory where log files should be stored.
LOG_ERROR_FILE${LOG_DIR}/isibackup-${OPT_SET}-${STARTDATETIME}.error.logmainName of the log file where all error log messages go. ISiBackup is not integrated with syslog, but uses its own logging concept by createing one log file per backup run (and an additional main log file per backup run).
LOG_FILE-l {File} | --log {File}${LOG_DIR}/isibackup-${OPT_SET}-${STARTDATETIME}.logmainName of the log file where all log messages go. ISiBackup is not integrated with syslog, but uses its own logging concept by createing one log file per backup run (and an additional error log file per backup run).
LOG_LEVEL-q | --quiet$LOG_ERROR | $LOG_INFOmain, command lineDefault log level. The higher it is is set, the less messages go to the log. See the libisi documentation for more information.
MAX_FSFILESIZE204800019999999givenMaximum size of one single file on the target file system.
MAX_PATHLEN220512givenMaximum number of characters in path names on the target file system.
NET$(hostname -d)external.dersbach.chgivenThe domain name of the host that this ISiBackup is running on. This can be used as part of the name of the backup directory location. Hence, backup directories can be named depending on the name of the network.
NET_SHORT$(hostname -d | cut -f 1 -d '.')externalgivenThe short domain name of the host that this ISiBackup is running on. This can be used as part of the name of the backup directory location. Hence, backup directories can be named depending on the name of the network.
OPT_ARCHIVE-a|--archive {directory}/var/backups/isibackup/mnt/backupsmain, set, command lineThe name of the directory where fetched (polled) backups will be stored locally.
OPT_COLLECT_DELETE_AFTER--collect-delete-afterfalsetrue or falsemain, set, command lineWhen a backup has been polled from another host, using the --collect command, will the remotely created backup still be needed? If no, set this to true, and ISiBackup will delete the remote copy. Otherwise, leave it as false. This keeps the backup space occupied on the remote file system, but it allows for an in-place refresh of backups and therefore increases speed considerably when re-creating a full backup.
OPT_COPY_DELETE_AFTERfalsetrue or falsemain, setWhen a backup has been pushed to another host, using the --copy command, will the locally created backup still be needed? If no, set this to true, and ISiBackup will delete the local copy. Otherwise, leave it as false. This keeps the backup space occupied on the local file system, but it allows for an in-place refresh of backups and therefore increases speed considerably when re-creating a full backup.
OPT_FILESYSTEMS-f|--other-filesystemsfalsetrue | falsemain, set, command lineIf set to true, ISiBackup includes files it find on other filesystems if the match the list of inclusion patterns. If set to false, it skips them by using the find -xdev option.
OPT_INCLUDE_MODEmount | fstab | {anything else}main, setIf set to mount, ISiBackup does not backup the files that match the list of inclusion patterns, but tries to backup everything on every filesystem that has been mounted. If set to fstab, it goes even further and includes even previously known, but unmounted filesystems by trying to mount them. Any other value in this option will render the normal behaviour with the list of inclusion patterns.
OPT_MODE-D|--diff | -F|--fullfulldiffcommand lineISiBackup mode of operation. Here you give full for a full backup and diff for a differential one.
OPT_REMOTE_HOST-H|--remote-host {Host}remotehost.domain.commain, set, command lineThe name of the remote host where the backup should be fetched from (poll) or stored to (push).
OPT_REMOTE_METHOD-r|--remote-method ftp|rsyncrsyncftpgiven, main, set, command lineThe method that should be used to fetch (poll) or to store (push) remote backup directories.
OPT_REMOTE_PASSWORD-p|--remote-password | -A|--remote-password-file {file}blablamain, set, command lineThe password to use when logging into the remote host, and when using passwords is appropriate (currently only for pushing onto an ftp server). The remote password can be read in from a file (use -A {file} instead of -p {password})
OPT_REMOTE_PATH-P|--remote-path {directory}/var/backups/isibackup/mnt/backupsmain, set, command lineThe name of the directory where copies (pushed) backups will be stored remotely.
OPT_REMOTE_USER-u|--remote-useradminmain, set, command lineThe user name to login into the remote host given in OPT_REMOTE_HOST. This is used for fetching (poll) and storing (push) of backups.
OPT_RSYNC_ADD_OPTIONS--rsync-add-optionsgiven, main, set, command lineAdditional options that should be included in the rsync command line. May be left empty.
OPT_RSYNC_OPTIONS--recursive --times --links --devices --verbose --verbose --checksum --stats --progress --partial-agiven, main, setThe options that the rsync method should be called with. Preset to all options necessary for conserving permisstions, ownerships and other "true to the original" properties.
OPT_SET-s|--set {Set}data_linuxcommand lineThe name of the currently executed backup set, as set with --set {Set}
OPT_SINCE-i|--since2003-12-01command lineIn case of a differential backup, this is the date to start against (i.e. the backup includes only files created or modified since this date). If left empty, ISiBackup will use the appropriate state file to determine the run of the last full backup.
ISIBACKUP_CONF_PATH/etc/isibackup/mnt/backups/confThe path where ISiBackup gets its main configuration files and the individual set definitions as well as other files it needs. 
PATH_DIFF/var/backups/isibackup/diff/mnt/backups/diffThe path where ISiBackup puts the results of the differential backup run. This should include a date identification. 
PATH_FULL/var/backups/isibackup/full/mnt/backups/fullmainThe path where ISiBackup puts the result of the full backup runs.
PATH_LIB/usr/lib/libisigivenPath to the library function ISiBackup uses (see in section "Configuration files and package dependencies").
PATH_STATE/var/backups/isibackup/state/mnt/backups/statemainThe path where ISiBackup puts the general state information of all backups it has generated. The state files ar shore files mainly containing a backup date, that is later used to determine the date to diff a differential backup to.
PROGRAM_IDENTisibackupgivenThe name if the ISiBackup program
PROGRAM_VERSION1.4.1givenThe current program version
STARTDATETIME2004-09-17-12-36givenThe exact start time (to the minute) of the ISiBackup run. Used as part of the log file names.
TODAY$(date -I)2004-02-17givenThe date of the backup run, may be used as part of the backup directory name.
TMPDIR$(dirname $(CMD_TEMPFILE))/var/tmpgivenName of the temporary directory. ISiBackup determines this by executing the tempfile command and then extracting the directory name of the new temporary file (without creating a file).