Some Information in the Beginning

Before explaining some examples, it is not too bad if you know what you are doing. Here are some important aspects about how storeBackup works: (The following explains the basic mechanism, for performance reasons it is implemented a little bit different. There are several waiting queues, parallelisms and a tiny scheduler inside which are not described here.)

storeBackup uses at least two internal flat files in each generated backup:

.md5CheckSums.info - general information about the backup
.md5CheckSums[.bz2] - information about every file (dir, etc.) saved

When starting storeBackup.pl, it will basically do (beside some other things):

  1. Read the contents of the previous .md5CheckSums[.bz2] file and store it in two dbm databases:
    dbm(md5sum) and dbm(filename) (dbm(md5sum) means, that md5sum is the key). Default is to store these databases in memory.
  2. Read the contents of other .md5CheckSums[.bz2] files (otherBackupSeries) and store it to dbm(md5sum). Always store the last copied file in the dbm file if two different files (e.g. from different backup series) are identical. This assures that multiple versions of the same file in different backups are unified in future backups.

Conclusions:

  1. Do not delete a backup to which the hard links are not yet generated. Use storeBackupUpdateBackup.pl to set the hard links and check consistency. It is a good idea to only use storeBackup.pl or storeBackupDel.pl for the deletion of old backups.
  2. All sharing of data in the backups is done via hard links. This means:
  3. Every information of a backup in the .md5CheckSums is stored with relative paths. It does not matter if you change the absolute path to the backup or backup with a different machine (server makes backup from client via NFS - client makes backup to server via NFS).
    Unresolved hard links to to other backup series (via option lateLinks) are also stored with relative paths. This means: You can move backupDir around as you like, but you should never change the relative paths between backup series before resolving all the links with storeBackupUpdateBackup.pl.

It is a good idea to use a configuration file instead of command line options. Simply call:

# storeBackup.pl --generate <configFile>

Edit the configuration file and call storeBackup in the following way:

# storeBackup.pl -f <configFile>

You can override settings in the configuration file on the command line (see Example 6).

If you have additional ideas or any questions, feel free to contact me (hjclaes(at)web.de).

Heinz-Josef Claes 2014-04-20