Du solltest zumindest das Kapitel Wie storeBackups Replikation funktioniert gelesen haben - es gibt Dir Erklärungen zu den grundlegenden Konzepten und Konfigurationen.
Du musst wissen, dass die Replikation als Erweiterung von lateLinks realisiert ist, um zu verstehen, wie sie im Detail funktioniert,
Die Interna der Replikationsfunktionalität werden an Beispielen erläutert. Zuerst erstellen wir ein Backup mit einer Replikation:
$ mkdir /tmp/a $ cd /tmp/a $ mkdir -p source backup/default repl delta $ cp /bin/ls source $ cp /bin/ls source/ls1 $ storeBackupReplicationWizard.pl -m backup -c repl -d delta -S default WARNING 2013.08.17 10:12:44 25548 cannot find any existing backup at master backup directory </tmp/a/backup> INFO 2013.08.17 10:12:44 25548 1 series chosen: INFO 2013.08.17 10:12:44 25548 <default> INFO 2013.08.17 10:12:44 25548 wrote master backup configuration file </tmp/a/backup/storeBackupBaseTree.conf> INFO 2013.08.17 10:12:44 25548 wrote backup copy configuration file </tmp/a/repl/storeBackupBaseTree.conf> INFO 2013.08.17 10:12:44 25548 wrote delta cache configuration file </tmp/a/delta/deltaCache.conf>
Schauen wir nach, was storeBackupReplicationWizard.pl generiert hat:
$ cat backup/storeBackupBaseTree.conf | egrep -v '^\s*$|^#' backupTreeName='Master Backup' backupType=master seriesToDistribute='default' deltaCache=/tmp/a/delta $ cat delta/deltaCache.conf | egrep -v '^\s*$|^#' backupCopy0='Backup Copy' 'default' ;backupCopy1= ;backupCopy2= ;backupCopy3= ;backupCopy4= ;backupCopy5= ;backupCopy6= ;backupCopy7= ;backupCopy8= ;backupCopy9= $ cat repl/storeBackupBaseTree.conf | egrep -v '^\s*$|^#' backupTreeName='Backup Copy' backupType=copy seriesToDistribute='default' deltaCache=/tmp/a/delta
Folgende Dateien sind in den Verzeichnissen:
$ find . -print | sort . ./backup ./backup/default ./backup/storeBackupBaseTree.conf ./delta ./delta/deltaCache.conf ./repl ./repl/storeBackupBaseTree.conf ./source ./source/ls ./source/ls1
Jetzt erstellen wir das erste Backup mit lateLinks:
$ storeBackup.pl -s source -b backup --lateLinks ..... $ find . -print | sort . ./backup ./backup/default ./backup/default/2013.08.17_10.13.41 ./backup/default/2013.08.17_10.13.41/ls1.bz2 ./backup/default/2013.08.17_10.13.41/.md5CheckSums.bz2 ./backup/default/2013.08.17_10.13.41/.md5CheckSums.info ./backup/default/2013.08.17_10.13.41/.storeBackupLinks ./backup/default/2013.08.17_10.13.41/.storeBackupLinks/linkFile.bz2 ./backup/storeBackupBaseTree.conf ./delta ./delta/deltaCache.conf ./repl ./repl/storeBackupBaseTree.conf ./source ./source/ls ./source/ls1
Bis jetzt nichts Neues. Eine komprimierte Version von ls1 in source befindet sich in backup. Die Datei ls fehlt dort aufgrund der Deduplikation. Weiterhin befinden sich die Metadaten sowie linkFile (siehe voriges Kapitel) in backup.
Wir beenden das Backup mit storeBackupUpdateBackup.pl:
$ storeBackupUpdateBackup.pl -b backup BEGIN 2013.08.17 10:14:59 25914 checking references and backup copying in <backup> VERSION 2013.08.17 10:14:59 25914 storeBackupUpdateBackup.pl, 3.4 + INFO 2013.08.17 10:14:59 25914 creating lock file </tmp/storeBackup.lock> INFO 2013.08.17 10:14:59 25914 reading <backup/storeBackupBaseTree.conf> INFO 2013.08.17 10:14:59 25914 master backup: checking <Master Backup/default> INFO 2013.08.17 10:14:59 25914 copying <2013.08.17_10.13.41> to </tmp/a/delta/default> INFO 2013.08.17 10:14:59 25914 scanning directory <backup> for existing backups INFO 2013.08.17 10:14:59 25914 scanning directory <backup/default> for existing backups STATISTIC 2013.08.17 10:14:59 25914 found 1 backup series, 1 backups, 0 renamed backups INFO 2013.08.17 10:14:59 25914 consistency check finished successfully INFO 2013.08.17 10:14:59 25914 found no references to backups from lateLinks that need storeBackupUpdateBackup run INFO 2013.08.17 10:14:59 25914 (1/0) updating </tmp/a/backup/default/2013.08.17_10.13.41> INFO 2013.08.17 10:14:59 25914 phase 1: mkdir, symlink and compressing files STATISTIC 2013.08.17 10:14:59 25914 created 0 directories STATISTIC 2013.08.17 10:14:59 25914 created 0 symbolic links STATISTIC 2013.08.17 10:14:59 25914 compressed 0 files STATISTIC 2013.08.17 10:14:59 25914 used 0.0 instead of 0.0 (0 <- 0 ; 0.0%) INFO 2013.08.17 10:14:59 25914 phase 2: setting hard links STATISTIC 2013.08.17 10:14:59 25914 linked 1 files INFO 2013.08.17 10:14:59 25914 phase 3: setting file permissions STATISTIC 2013.08.17 10:14:59 25914 set permissions for 2 files INFO 2013.08.17 10:14:59 25914 phase 4: setting directory permissions STATISTIC 2013.08.17 10:14:59 25914 set permissions for 0 directories INFO 2013.08.17 10:14:59 25914 reading <backup/storeBackupBaseTree.conf> INFO 2013.08.17 10:14:59 25914 scanning directory <backup> for existing backups INFO 2013.08.17 10:14:59 25914 scanning directory <backup/default> for existing backups STATISTIC 2013.08.17 10:14:59 25914 found 1 backup series, 1 backups, 0 renamed backups INFO 2013.08.17 10:14:59 25914 consistency check finished successfully INFO 2013.08.17 10:14:59 25914 found no references to backups from lateLinks that need storeBackupUpdateBackup run INFO 2013.08.17 10:14:59 25914 deleting in deltaCache </tmp/a/delta> processedBackups INFO 2013.08.17 10:14:59 25914 age for deletion is > 99d (delete backups older than Fri 2013.05.10 10:14:59) STATISTIC 2013.08.17 10:14:59 25914 duration = 1s STATISTIC 2013.08.17 10:14:59 25914 [sec] | user| system STATISTIC 2013.08.17 10:14:59 25914 -------+----------+---------- STATISTIC 2013.08.17 10:14:59 25914 process| 0.07| 0.03 STATISTIC 2013.08.17 10:14:59 25914 childs | 0.05| 0.00 STATISTIC 2013.08.17 10:14:59 25914 -------+----------+---------- STATISTIC 2013.08.17 10:14:59 25914 sum | 0.12| 0.03 => 0.15 INFO 2013.08.17 10:14:59 25914 syncing ... END 2013.08.17 10:14:59 25914 checking references and copying in <backup> $ find . -print | sort . ./backup ./backup/default ./backup/default/2013.08.17_10.13.41 ./backup/default/2013.08.17_10.13.41/ls1.bz2 ./backup/default/2013.08.17_10.13.41/ls.bz2 ./backup/default/2013.08.17_10.13.41/.md5CheckSums.bz2 ./backup/default/2013.08.17_10.13.41/.md5CheckSums.info ./backup/default/2013.08.17_10.13.41/.storeBackupLinks ./backup/storeBackupBaseTree.conf ./delta ./delta/default ./delta/default/2013.08.17_10.13.41 ./delta/default/2013.08.17_10.13.41/ls1.bz2 ./delta/default/2013.08.17_10.13.41/.md5CheckSums.bz2 ./delta/default/2013.08.17_10.13.41/.md5CheckSums.info ./delta/default/2013.08.17_10.13.41/.storeBackupLinks ./delta/default/2013.08.17_10.13.41/.storeBackupLinks/linkFile.bz2 ./delta/deltaCache.conf ./delta/processedBackups ./repl ./repl/storeBackupBaseTree.conf ./source ./source/ls ./source/ls1
Nun hat sich vieles verändert:
reading <backup/storeBackupBaseTree.conf> master backup: checking <Master Backup/default> copying <2013.08.17_10.13.41> to </tmp/a/delta/default>
Das Programm erkannte, dass das lateLinks Backup noch nicht in den
Delta Cache kopiert wurde - daher wurde es vor der Vervollständigung
in diesen kopiert. Beachte die Ausgabe von find; sie zeigt
die Kopie im Verzeichnis delta. Der Delta-Cache sammelt alle
neuen (zu replizierenden) Backups vom Master-Backup (backup),
bis sie zu ihrem Bestimmungsort (repl) gelangen, und
speichert sie dann noch eine Zeit lang.
Du siehst auch, dass das Verzeichnis processedBackups in
delta erzeugt wurde.
Jetzt läuft storeBackupUpdateBackup.pl ein zweites Mal, aber auf dem Verzeichnis repl:
$ storeBackupUpdateBackup.pl -b repl BEGIN 2013.08.17 10:33:03 28608 checking references and backup copying in <repl> VERSION 2013.08.17 10:33:03 28608 storeBackupUpdateBackup.pl, 3.4 + INFO 2013.08.17 10:33:03 28608 creating lock file </tmp/storeBackup.lock> INFO 2013.08.17 10:33:03 28608 reading <repl/storeBackupBaseTree.conf> INFO 2013.08.17 10:33:03 28608 reading </tmp/a/delta/deltaCache.conf> INFO 2013.08.17 10:33:03 28608 copying </tmp/a/delta/default/2013.08.17_10.13.41> to <repl/default> INFO 2013.08.17 10:33:03 28608 scanning directory <repl> for existing backups INFO 2013.08.17 10:33:03 28608 scanning directory <repl/default> for existing backups STATISTIC 2013.08.17 10:33:03 28608 found 1 backup series, 1 backups, 0 renamed backups INFO 2013.08.17 10:33:03 28608 consistency check finished successfully INFO 2013.08.17 10:33:03 28608 found no references to backups from lateLinks that need storeBackupUpdateBackup run INFO 2013.08.17 10:33:03 28608 (1/0) updating </tmp/a/repl/default/2013.08.17_10.13.41> INFO 2013.08.17 10:33:03 28608 phase 1: mkdir, symlink and compressing files STATISTIC 2013.08.17 10:33:03 28608 created 0 directories STATISTIC 2013.08.17 10:33:03 28608 created 0 symbolic links STATISTIC 2013.08.17 10:33:03 28608 compressed 0 files STATISTIC 2013.08.17 10:33:03 28608 used 0.0 instead of 0.0 (0 <- 0 ; 0.0%) INFO 2013.08.17 10:33:03 28608 phase 2: setting hard links STATISTIC 2013.08.17 10:33:03 28608 linked 1 files INFO 2013.08.17 10:33:03 28608 phase 3: setting file permissions STATISTIC 2013.08.17 10:33:03 28608 set permissions for 2 files INFO 2013.08.17 10:33:03 28608 phase 4: setting directory permissions STATISTIC 2013.08.17 10:33:03 28608 set permissions for 0 directories INFO 2013.08.17 10:33:03 28608 reading <repl/storeBackupBaseTree.conf> INFO 2013.08.17 10:33:03 28608 marked <default/2013.08.17_10.13.41> as linked in </tmp/a/delta> INFO 2013.08.17 10:33:03 28608 scanning directory <repl> for existing backups INFO 2013.08.17 10:33:03 28608 scanning directory <repl/default> for existing backups STATISTIC 2013.08.17 10:33:03 28608 found 1 backup series, 1 backups, 0 renamed backups INFO 2013.08.17 10:33:03 28608 consistency check finished successfully INFO 2013.08.17 10:33:03 28608 found no references to backups from lateLinks that need storeBackupUpdateBackup run INFO 2013.08.17 10:33:03 28608 backup </tmp/a/delta/default/2013.08.17_10.13.41> copied to <Backup Copy> INFO 2013.08.17 10:33:03 28608 moving backup to </tmp/a/delta/processedBackups/default> INFO 2013.08.17 10:33:03 28608 deleting in deltaCache </tmp/a/delta> processedBackups INFO 2013.08.17 10:33:03 28608 age for deletion is > 99d (delete backups older than Fri 2013.05.10 10:33:03) INFO 2013.08.17 10:33:03 28608 checking series <default> INFO 2013.08.17 10:33:03 28608 default -> 2013.08.17_10.13.41 - not old enough to delete STATISTIC 2013.08.17 10:33:03 28608 duration = 1s STATISTIC 2013.08.17 10:33:03 28608 [sec] | user| system STATISTIC 2013.08.17 10:33:03 28608 -------+----------+---------- STATISTIC 2013.08.17 10:33:03 28608 process| 0.09| 0.01 STATISTIC 2013.08.17 10:33:03 28608 childs | 0.05| 0.00 STATISTIC 2013.08.17 10:33:03 28608 -------+----------+---------- STATISTIC 2013.08.17 10:33:03 28608 sum | 0.14| 0.01 => 0.15 INFO 2013.08.17 10:33:03 28608 syncing ... END 2013.08.17 10:33:03 28608 checking references and copying in <repl> $ find . -print | sort . ./backup ./backup/default ./backup/default/2013.08.17_10.13.41 ./backup/default/2013.08.17_10.13.41/ls1.bz2 ./backup/default/2013.08.17_10.13.41/ls.bz2 ./backup/default/2013.08.17_10.13.41/.md5CheckSums.bz2 ./backup/default/2013.08.17_10.13.41/.md5CheckSums.info ./backup/default/2013.08.17_10.13.41/.storeBackupLinks ./backup/storeBackupBaseTree.conf ./delta ./delta/default ./delta/default/2013.08.17_10.13.41.copied ./delta/default/2013.08.17_10.13.41.linked ./delta/deltaCache.conf ./delta/processedBackups ./delta/processedBackups/default ./delta/processedBackups/default/2013.08.17_10.13.41 ./delta/processedBackups/default/2013.08.17_10.13.41/ls1.bz2 ./delta/processedBackups/default/2013.08.17_10.13.41/.md5CheckSums.bz2 ./delta/processedBackups/default/2013.08.17_10.13.41/.md5CheckSums.info ./delta/processedBackups/default/2013.08.17_10.13.41/.storeBackupLinks ./delta/processedBackups/default/2013.08.17_10.13.41/.storeBackupLinks/linkFile.bz2 ./repl ./repl/default ./repl/default/2013.08.17_10.13.41 ./repl/default/2013.08.17_10.13.41/ls1.bz2 ./repl/default/2013.08.17_10.13.41/ls.bz2 ./repl/default/2013.08.17_10.13.41/.md5CheckSums.bz2 ./repl/default/2013.08.17_10.13.41/.md5CheckSums.info ./repl/default/2013.08.17_10.13.41/.storeBackupLinks ./repl/storeBackupBaseTree.conf ./source ./source/ls ./source/ls1
Ein Blick auf die Dateiliste und den Log von storeBackupUpdateBackup.pl zeigt:
$ diff -r backup repl diff -r backup/storeBackupBaseTree.conf repl/storeBackupBaseTree.conf 21c21 < backupTreeName='Master Backup' --- > backupTreeName='Backup Copy' 26c26 < backupType=master --- > backupType=copy
dass nur die Konfigurationsdateien für die Replikation unterschiedlich sind. Die Backups in diesen Verzeichnissen sind völlig identisch. Daher können beispielsweise die Programme storeBackupDel.pl oder storeBackupCheckBackup.pl auf beiden Verzeichnissen gestartet werden.
$ cat ./delta/default/2013.08.17_10.13.41.copied Backup Copy $ cat ./delta/default/2013.08.17_10.13.41.linked Backup Copy
Das bedeutet, dass das Backup der Serie default vom 2013.08.17_10.13.41 zur Backup-Kopie Backup Copy kopiert und verlinkt wurde. Wenn Du zu mehr als einem anderen Verzeichnis (z.B. auf einer USB-Platte) replizierst, dann findest Du auch deren Namen (so wie Backup Copy in diesem Fall) in diesen Dateien (.copied und .linked) nachdem sie kopiert und verlinkt sind. Auf diese Art kann storeBackup entscheiden, ob ein Backup vollständig in alle Replikationsverzeichnissen kopiert und verlinkt wurde. Nachdem dieses sichergestellt ist, werden die betroffenen Sicherungen in das Unterverzeichnis processedBackups im Delta Cache verschoben. (Wir sehen später, wie diese Daten verwendet werden können, wenn im Replikationsprozess etwas schief geht.) Diese verarbeiteten Backups werden für eine konfigurierbare Zeit gespeichert. Der Default-Zeitraum von 99 Tagen ist sehr konservativ und sollte kürzer gewählt werden.
Mit Hilfe des oben aufgeführten Beispiels ist es einfach zu erkennen, wie das Replikationskonzept umgesetzt ist:62
Mit Kenntnis der grundlegenden Prinzipien der Replikation ist es einfach, darauf zu reagieren, wenn etwas schief geht. Es geht immer ums Verschieben, Kopieren oder darum, Zeilen an eine Datei anzuhängen. Simulieren wir nun eine abgebrochene Replikation. (Es folgt ein neues Beispiel von Anfang an.)
Als erstes erzeugen wir ein neues Backup und replizieren es:
$ mkdir /tmp/x $ cd /tmp/x $ mkdir -p source backup/default repl delta $ cp /bin/ls source $ storeBackupReplicationWizard.pl -m backup -c repl -d delta -S default $ storeBackup.pl -s source -b backup --lateLinks $ storeBackupUpdateBackup.pl -b backup $ storeBackupUpdateBackup.pl -b repl
Wir fügen noch eine Datei zu source hinzu und starten das Backup sowie die Replikation:
$ cp /bin/pwd source $ storeBackup.pl -s source -b backup --lateLinks $ storeBackupUpdateBackup.pl -b backup $ storeBackupUpdateBackup.pl -b repl
Die folgenden Backups wurden erzeugt:
$ ls -1 backup/default/ 2013.08.18_09.45.16 2013.08.18_09.49.21
Nun stellen wir uns vor, das zweite Backup sei korrupt - vielleicht wegen einer Unterbrechung des Laufs von storeBackupUpdateBackup.pl, aufgetretenen Schreibfehlern oder warum auch immer. Da wir die Details der Fehler und welche Dateien betroffen wären nicht wüssten, löschen wir das soeben replizierte Backup:
$ ls -1 repl/default/ 2013.08.18_09.45.16 2013.08.18_09.49.21 $ rm -r repl/default/2013.08.18_09.49.21
Wiederholtes Starten von storeBackupUpdateBackup.pl auf der Replikation (ein Backup fehlt!) resultiert in:
$ storeBackupUpdateBackup.pl -b repl BEGIN 2013.08.18 09:57:46 6852 checking references and backup copying in <repl> VERSION 2013.08.18 09:57:46 6852 storeBackupUpdateBackup.pl, 3.4 + INFO 2013.08.18 09:57:46 6852 creating lock file </tmp/storeBackup.lock> INFO 2013.08.18 09:57:46 6852 reading <repl/storeBackupBaseTree.conf> INFO 2013.08.18 09:57:46 6852 reading </tmp/x/delta/deltaCache.conf> INFO 2013.08.18 09:57:46 6852 scanning directory <repl> for existing backups INFO 2013.08.18 09:57:46 6852 scanning directory <repl/default> for existing backups STATISTIC 2013.08.18 09:57:46 6852 found 1 backup series, 1 backups, 0 renamed backups INFO 2013.08.18 09:57:46 6852 consistency check finished successfully INFO 2013.08.18 09:57:46 6852 found no references to backups from lateLinks that need storeBackupUpdateBackup run INFO 2013.08.18 09:57:46 6852 everything is updated, nothing to do INFO 2013.08.18 09:57:46 6852 deleting in deltaCache </tmp/x/delta> processedBackups INFO 2013.08.18 09:57:46 6852 age for deletion is > 99d (delete backups older than Sat 2013.05.11 09:57:46) INFO 2013.08.18 09:57:46 6852 checking series <default> INFO 2013.08.18 09:57:46 6852 default -> 2013.08.18_09.45.16 - not old enough to delete INFO 2013.08.18 09:57:46 6852 default -> 2013.08.18_09.49.21 - not old enough to delete STATISTIC 2013.08.18 09:57:46 6852 duration = 1s STATISTIC 2013.08.18 09:57:46 6852 [sec] | user| system STATISTIC 2013.08.18 09:57:46 6852 -------+----------+---------- STATISTIC 2013.08.18 09:57:46 6852 process| 0.08| 0.01 STATISTIC 2013.08.18 09:57:46 6852 childs | 0.05| 0.00 STATISTIC 2013.08.18 09:57:46 6852 -------+----------+---------- STATISTIC 2013.08.18 09:57:46 6852 sum | 0.13| 0.01 => 0.14 INFO 2013.08.18 09:57:46 6852 syncing ... END 2013.08.18 09:57:46 6852 checking references and copying in <repl> $ find repl -print | sort repl repl/default repl/default/2013.08.18_09.45.16 repl/default/2013.08.18_09.45.16/ls.bz2 repl/default/2013.08.18_09.45.16/.md5CheckSums.bz2 repl/default/2013.08.18_09.45.16/.md5CheckSums.info repl/default/2013.08.18_09.45.16/.storeBackupLinks repl/storeBackupBaseTree.conf
- nichts. storeBackupUpdateBackup.pl vermutet, dass alles passt, weil nichts mehr zu replizieren ist. (Die Kontrolldateien zeigen an, dass alles perfekt funktionierte.)
Wenn dieser Fehler nicht behoben wird, wird die Replikation beim nächsten Backup in Fehler laufen. Um das zu verdeutlichen, provozieren wir diesen Fehler:
$ storeBackup.pl -s source -b backup --lateLinks $ storeBackupUpdateBackup.pl -b backup $ storeBackupUpdateBackup.pl -b repl $ storeBackupUpdateBackup.pl -b repl BEGIN 2013.08.18 10:06:06 7050 checking references and backup copying in <repl> VERSION 2013.08.18 10:06:06 7050 storeBackupUpdateBackup.pl, 3.4 + INFO 2013.08.18 10:06:06 7050 creating lock file </tmp/storeBackup.lock> INFO 2013.08.18 10:06:06 7050 reading <repl/storeBackupBaseTree.conf> INFO 2013.08.18 10:06:06 7050 reading </tmp/x/delta/deltaCache.conf> INFO 2013.08.18 10:06:06 7050 copying </tmp/x/delta/default/2013.08.18_10.05.54> to <repl/default> INFO 2013.08.18 10:06:07 7050 scanning directory <repl> for existing backups INFO 2013.08.18 10:06:07 7050 scanning directory <repl/default> for existing backups STATISTIC 2013.08.18 10:06:07 7050 found 1 backup series, 2 backups, 0 renamed backups ERROR 2013.08.18 10:06:07 7050 FATAL ERROR: link <../2013.08.18_09.49.21> to non existing dir in </tmp/x/repl/default/2013.08.18_10.05.54/.storeBackupLinks/linkTo> ERROR 2013.08.18 10:06:07 7050 found 1 inconsistencies, please repair and check again
Wie die FATAL ERROR Meldung zeigt, wurde ein fehlendes Backup festgestellt - es gibt daher keine Chance, die Hardlinks zu erstellen.
Ein Blick auf die Dateien im Delta Cache (delta) und das Zielverzeichnis der Replikation (repl) zeigt:
$ find delta repl -print | sort delta delta/default delta/default/2013.08.18_09.45.16.copied delta/default/2013.08.18_09.45.16.linked delta/default/2013.08.18_09.49.21.copied delta/default/2013.08.18_09.49.21.linked delta/default/2013.08.18_10.05.54 delta/default/2013.08.18_10.05.54.copied delta/default/2013.08.18_10.05.54/.md5CheckSums.bz2 delta/default/2013.08.18_10.05.54/.md5CheckSums.info delta/default/2013.08.18_10.05.54/.storeBackupLinks delta/default/2013.08.18_10.05.54/.storeBackupLinks/linkFile.bz2 delta/default/2013.08.18_10.05.54/.storeBackupLinks/linkTo delta/deltaCache.conf delta/processedBackups delta/processedBackups/default delta/processedBackups/default/2013.08.18_09.45.16 delta/processedBackups/default/2013.08.18_09.45.16/ls.bz2 delta/processedBackups/default/2013.08.18_09.45.16/.md5CheckSums.bz2 delta/processedBackups/default/2013.08.18_09.45.16/.md5CheckSums.info delta/processedBackups/default/2013.08.18_09.45.16/.storeBackupLinks delta/processedBackups/default/2013.08.18_09.45.16/.storeBackupLinks/linkFile.bz2 delta/processedBackups/default/2013.08.18_09.49.21 delta/processedBackups/default/2013.08.18_09.49.21/.md5CheckSums.bz2 delta/processedBackups/default/2013.08.18_09.49.21/.md5CheckSums.info delta/processedBackups/default/2013.08.18_09.49.21/pwd.bz2 delta/processedBackups/default/2013.08.18_09.49.21/.storeBackupLinks delta/processedBackups/default/2013.08.18_09.49.21/.storeBackupLinks/linkFile.bz2 delta/processedBackups/default/2013.08.18_09.49.21/.storeBackupLinks/linkTo repl repl/default repl/default/2013.08.18_09.45.16 repl/default/2013.08.18_09.45.16/ls.bz2 repl/default/2013.08.18_09.45.16/.md5CheckSums.bz2 repl/default/2013.08.18_09.45.16/.md5CheckSums.info repl/default/2013.08.18_09.45.16/.storeBackupLinks repl/default/2013.08.18_10.05.54 repl/default/2013.08.18_10.05.54/.md5CheckSums.bz2 repl/default/2013.08.18_10.05.54/.md5CheckSums.info repl/default/2013.08.18_10.05.54/.storeBackupLinks repl/default/2013.08.18_10.05.54/.storeBackupLinks/linkFile.bz2 repl/default/2013.08.18_10.05.54/.storeBackupLinks/linkTo repl/storeBackupBaseTree.conf
Wir stellen fest:
Ein anderer Weg, das Problem zu lösen, ist die Verwendung von linkToDirs.pl, um das fehlende Backup von backup direkt an den korrekten Platz in repl zu kopieren. Siehe Kapitel linkToDirs.pl für nähere Informationen.
Der „eleganteste`` und schnellste Weg ist, den Delta-Cache auf die Situation in repl anzupassen:
$ rm delta/default/2013.08.18_09.49.21.copied delta/default/2013.08.18_09.49.21.linked $ mv delta/processedBackups/default/2013.08.18_09.49.21 delta/default $ find delta -print | sort delta delta/default delta/default/2013.08.18_09.45.16.copied delta/default/2013.08.18_09.45.16.linked delta/default/2013.08.18_09.49.21 delta/default/2013.08.18_09.49.21/.md5CheckSums.bz2 delta/default/2013.08.18_09.49.21/.md5CheckSums.info delta/default/2013.08.18_09.49.21/pwd.bz2 delta/default/2013.08.18_09.49.21/.storeBackupLinks delta/default/2013.08.18_09.49.21/.storeBackupLinks/linkFile.bz2 delta/default/2013.08.18_09.49.21/.storeBackupLinks/linkTo delta/default/2013.08.18_10.05.54 delta/default/2013.08.18_10.05.54.copied delta/default/2013.08.18_10.05.54/.md5CheckSums.bz2 delta/default/2013.08.18_10.05.54/.md5CheckSums.info delta/default/2013.08.18_10.05.54/.storeBackupLinks delta/default/2013.08.18_10.05.54/.storeBackupLinks/linkFile.bz2 delta/default/2013.08.18_10.05.54/.storeBackupLinks/linkTo delta/deltaCache.conf delta/processedBackups delta/processedBackups/default delta/processedBackups/default/2013.08.18_09.45.16 delta/processedBackups/default/2013.08.18_09.45.16/ls.bz2 delta/processedBackups/default/2013.08.18_09.45.16/.md5CheckSums.bz2 delta/processedBackups/default/2013.08.18_09.45.16/.md5CheckSums.info delta/processedBackups/default/2013.08.18_09.45.16/.storeBackupLinks delta/processedBackups/default/2013.08.18_09.45.16/.storeBackupLinks/linkFile.bz2
Ein Lauf von storeBackupUpdateBackup.pl auf repl ergibt folgende Ausgaben:
$ storeBackupUpdateBackup.pl -b repl BEGIN 2013.08.18 10:39:08 7958 checking references and backup copying in <repl> VERSION 2013.08.18 10:39:08 7958 storeBackupUpdateBackup.pl, 3.4 + INFO 2013.08.18 10:39:08 7958 removing old lock file of process <7050> INFO 2013.08.18 10:39:08 7958 creating lock file </tmp/storeBackup.lock> INFO 2013.08.18 10:39:08 7958 reading <repl/storeBackupBaseTree.conf> INFO 2013.08.18 10:39:08 7958 reading </tmp/x/delta/deltaCache.conf> INFO 2013.08.18 10:39:08 7958 copying </tmp/x/delta/default/2013.08.18_09.49.21> to <repl/default> INFO 2013.08.18 10:39:08 7958 scanning directory <repl> for existing backups INFO 2013.08.18 10:39:08 7958 scanning directory <repl/default> for existing backups STATISTIC 2013.08.18 10:39:08 7958 found 1 backup series, 3 backups, 0 renamed backups INFO 2013.08.18 10:39:08 7958 1 directory </tmp/x/repl/default/2013.08.18_09.45.16> has no linkFrom entry INFO 2013.08.18 10:39:08 7958 autorepair: wrote linkFrom from </tmp/x/repl/default/2013.08.18_09.45.16> to </tmp/x/repl/default/2013.08.18_09.49.21> INFO 2013.08.18 10:39:08 7958 INFO 2013.08.18 10:39:08 7958 ----- repeating consistency check ----- INFO 2013.08.18 10:39:08 7958 scanning directory <repl> for existing backups INFO 2013.08.18 10:39:08 7958 scanning directory <repl/default> for existing backups STATISTIC 2013.08.18 10:39:08 7958 found 1 backup series, 3 backups, 0 renamed backups INFO 2013.08.18 10:39:08 7958 1 directory </tmp/x/repl/default/2013.08.18_09.49.21> has no linkFrom entry INFO 2013.08.18 10:39:08 7958 autorepair: wrote linkFrom from </tmp/x/repl/default/2013.08.18_09.49.21> to </tmp/x/repl/default/2013.08.18_10.05.54> INFO 2013.08.18 10:39:08 7958 INFO 2013.08.18 10:39:08 7958 ----- repeating consistency check ----- INFO 2013.08.18 10:39:08 7958 scanning directory <repl> for existing backups INFO 2013.08.18 10:39:08 7958 scanning directory <repl/default> for existing backups STATISTIC 2013.08.18 10:39:08 7958 found 1 backup series, 3 backups, 0 renamed backups INFO 2013.08.18 10:39:08 7958 consistency check finished successfully INFO 2013.08.18 10:39:08 7958 listing references: INFO 2013.08.18 10:39:08 7958 /tmp/x/repl/default/2013.08.18_09.49.21 INFO 2013.08.18 10:39:08 7958 -> /tmp/x/repl/default/2013.08.18_09.45.16 INFO 2013.08.18 10:39:08 7958 /tmp/x/repl/default/2013.08.18_10.05.54 INFO 2013.08.18 10:39:08 7958 -> /tmp/x/repl/default/2013.08.18_09.49.21 INFO 2013.08.18 10:39:08 7958 (1/2) updating </tmp/x/repl/default/2013.08.18_09.49.21> INFO 2013.08.18 10:39:08 7958 phase 1: mkdir, symlink and compressing files STATISTIC 2013.08.18 10:39:08 7958 created 0 directories STATISTIC 2013.08.18 10:39:08 7958 created 0 symbolic links STATISTIC 2013.08.18 10:39:08 7958 compressed 0 files STATISTIC 2013.08.18 10:39:08 7958 used 0.0 instead of 0.0 (0 <- 0 ; 0.0%) INFO 2013.08.18 10:39:08 7958 phase 2: setting hard links STATISTIC 2013.08.18 10:39:08 7958 linked 1 files INFO 2013.08.18 10:39:08 7958 phase 3: setting file permissions STATISTIC 2013.08.18 10:39:08 7958 set permissions for 2 files INFO 2013.08.18 10:39:08 7958 phase 4: setting directory permissions STATISTIC 2013.08.18 10:39:08 7958 set permissions for 0 directories INFO 2013.08.18 10:39:08 7958 reading <repl/storeBackupBaseTree.conf> INFO 2013.08.18 10:39:08 7958 marked <default/2013.08.18_09.49.21> as linked in </tmp/x/delta> INFO 2013.08.18 10:39:08 7958 scanning directory <repl> for existing backups INFO 2013.08.18 10:39:08 7958 scanning directory <repl/default> for existing backups STATISTIC 2013.08.18 10:39:08 7958 found 1 backup series, 3 backups, 0 renamed backups INFO 2013.08.18 10:39:08 7958 consistency check finished successfully INFO 2013.08.18 10:39:08 7958 listing references: INFO 2013.08.18 10:39:08 7958 /tmp/x/repl/default/2013.08.18_10.05.54 INFO 2013.08.18 10:39:08 7958 -> /tmp/x/repl/default/2013.08.18_09.49.21 INFO 2013.08.18 10:39:08 7958 (2/2) updating </tmp/x/repl/default/2013.08.18_10.05.54> INFO 2013.08.18 10:39:08 7958 phase 1: mkdir, symlink and compressing files STATISTIC 2013.08.18 10:39:08 7958 created 0 directories STATISTIC 2013.08.18 10:39:08 7958 created 0 symbolic links STATISTIC 2013.08.18 10:39:08 7958 compressed 0 files STATISTIC 2013.08.18 10:39:08 7958 used 0.0 instead of 0.0 (0 <- 0 ; 0.0%) INFO 2013.08.18 10:39:08 7958 phase 2: setting hard links STATISTIC 2013.08.18 10:39:08 7958 linked 2 files INFO 2013.08.18 10:39:08 7958 phase 3: setting file permissions STATISTIC 2013.08.18 10:39:08 7958 set permissions for 2 files INFO 2013.08.18 10:39:08 7958 phase 4: setting directory permissions STATISTIC 2013.08.18 10:39:08 7958 set permissions for 0 directories INFO 2013.08.18 10:39:08 7958 reading <repl/storeBackupBaseTree.conf> INFO 2013.08.18 10:39:08 7958 marked <default/2013.08.18_10.05.54> as linked in </tmp/x/delta> INFO 2013.08.18 10:39:08 7958 scanning directory <repl> for existing backups INFO 2013.08.18 10:39:08 7958 scanning directory <repl/default> for existing backups STATISTIC 2013.08.18 10:39:08 7958 found 1 backup series, 3 backups, 0 renamed backups INFO 2013.08.18 10:39:08 7958 consistency check finished successfully INFO 2013.08.18 10:39:08 7958 found no references to backups from lateLinks that need storeBackupUpdateBackup run INFO 2013.08.18 10:39:08 7958 backup </tmp/x/delta/default/2013.08.18_09.49.21> copied to <Backup Copy> INFO 2013.08.18 10:39:08 7958 moving backup to </tmp/x/delta/processedBackups/default> INFO 2013.08.18 10:39:08 7958 backup </tmp/x/delta/default/2013.08.18_10.05.54> copied to <Backup Copy> INFO 2013.08.18 10:39:08 7958 moving backup to </tmp/x/delta/processedBackups/default> INFO 2013.08.18 10:39:08 7958 deleting in deltaCache </tmp/x/delta> processedBackups INFO 2013.08.18 10:39:08 7958 age for deletion is > 99d (delete backups older than Sat 2013.05.11 10:39:08) INFO 2013.08.18 10:39:08 7958 checking series <default> INFO 2013.08.18 10:39:08 7958 default -> 2013.08.18_09.45.16 - not old enough to delete INFO 2013.08.18 10:39:08 7958 default -> 2013.08.18_09.49.21 - not old enough to delete INFO 2013.08.18 10:39:08 7958 default -> 2013.08.18_10.05.54 - not old enough to delete STATISTIC 2013.08.18 10:39:08 7958 duration = 1s STATISTIC 2013.08.18 10:39:08 7958 [sec] | user| system STATISTIC 2013.08.18 10:39:08 7958 -------+----------+---------- STATISTIC 2013.08.18 10:39:08 7958 process| 0.12| 0.01 STATISTIC 2013.08.18 10:39:08 7958 childs | 0.04| 0.00 STATISTIC 2013.08.18 10:39:08 7958 -------+----------+---------- STATISTIC 2013.08.18 10:39:08 7958 sum | 0.16| 0.01 => 0.17 INFO 2013.08.18 10:39:08 7958 syncing ... END 2013.08.18 10:39:08 7958 checking references and copying in <repl>
Folgendes passierte:
copying </tmp/x/delta/default/2013.08.18_09.49.21> to <repl/default>
Das letzte Backup (2013.08.18_10.05.54) wurde nicht kopiert, weil das schon erfolgte.
listing references: /tmp/x/repl/default/2013.08.18_09.49.21 -> /tmp/x/repl/default/2013.08.18_09.45.16 /tmp/x/repl/default/2013.08.18_10.05.54 -> /x/repl/default/2013.08.18_09.49.21
Anschließend vervollständigte es beide Backups.
Zum Schluss überprüfe ich mit storeBackupCheckBackup.pl, ob die Replikation korrekt verlief:
$ storeBackupCheckBackup.pl -c repl BEGIN 2013.08.18 10:42:50 8042 checking backups in </tmp/x/repl> VERSION 2013.08.18 10:42:50 8042 storeBackupCheckBackup.pl, 3.4 + INFO 2013.08.18 10:42:50 8042 scanning directory <repl> for existing backups INFO 2013.08.18 10:42:50 8042 scanning directory <repl/default> for existing backups STATISTIC 2013.08.18 10:42:50 8042 found 1 backup series, 3 backups, 0 renamed backups INFO 2013.08.18 10:42:50 8042 consistency check finished successfully INFO 2013.08.18 10:42:50 8042 found no references to backups from lateLinks that need storeBackupUpdateBackup run INFO 2013.08.18 10:42:50 8042 backup directories to check INFO 2013.08.18 10:42:50 8042 /tmp/x/repl/default/2013.08.18_09.45.16 INFO 2013.08.18 10:42:50 8042 /tmp/x/repl/default/2013.08.18_09.49.21 INFO 2013.08.18 10:42:50 8042 /tmp/x/repl/default/2013.08.18_10.05.54 INFO 2013.08.18 10:42:50 8042 -- checking </tmp/x/repl/default/2013.08.18_09.45.16> ... INFO 2013.08.18 10:42:50 8042 -- checking </tmp/x/repl/default/2013.08.18_09.49.21> ... INFO 2013.08.18 10:42:50 8042 -- checking </tmp/x/repl/default/2013.08.18_10.05.54> ... INFO 2013.08.18 10:42:50 8042 -- no WARNINGS OCCURRED DURING THE CHECK! -- INFO 2013.08.18 10:42:50 8042 -- no ERRORS OCCURRED DURING THE CHECK! -- END 2013.08.18 10:42:50 8042 checking backups in </tmp/x/repl>