Falls Du Wildcards für die Konfiguration der Replikation verwenden willst, solltest Du deren zugrundeliegenden Prinzipien verstanden haben, bevor Du mit diesem Kapitel fortfährst.
Konfiguration der Hardlink Option otherBackupSeries mittels Wildcards
Um die Ergebnisse der Verwendung von Wildcards einfach und transparent darzustellen, schreibt storeBackup.pl die Ergebnisse der Wildcard-Expansion in die Log-Dateien.
Stell dir vor, Du willst alle Serien, die im zweiten Schritt
repliziert werden sollen per Hard Link verknüpfen. Um dieses einfach
konfigurieren zu können, sollen alle Serien außer die, deren
Name mit .norepl endet, repliziert werden. Ich nehme dabei an,
dass der Name jeder Serie dem Namen des Servers entspricht (hier:
server1 und server2). Die Namen der Serien sind daher
einfach server1 und server2, die Namen der Serien, die
nicht repliziert werden sollen sind server1.norepl und
server2.norepl. Du willst, dass alle Serien miteinander
verlinkt werden, aber natürlich nicht, dass eine zu replizierende
Serie in eine nicht zu replizierende Serie verlinkt wird. Das würde in
der Replikation zu einer Fehlermeldung führen. Du kannst für den
beschriebenen Anwendungsfall die folgende Konfiguration in den
Konfigurationsdateien verwenden:
für server1 otherBackupSeries = 0: -:.norepl
für server2 otherBackupSeries = 0: -:.norepl
für server1.norepl otherBackupSeries = 0:
für server2.norepl otherBackupSeries = 0:
Alternativ kannst du die folgende Syntax verwenden:
für server1 otherBackupSeries = +0: -:.norepl
für server2 otherBackupSeries = +0: -:.norepl
für server1.norepl otherBackupSeries = +0:
für server2.norepl otherBackupSeries = +0:
Das „+`` Zeichen ist optional. Du kannst Plus und Minus Zeichen auch ohne Wildcards verwenden, aber insbesondere das Minus Zeichen macht dann nicht viel Sinn.56
Starten von storeBackup.pl (hier wird beispielhaft die Kommandozeile verwendet) ergibt die folgenden Log-Meldungen:57
$ storeBackup.pl -s s -b b -S server1 '0:*' -- '-:*.norepl' .... INFO 2014.02.22 10:02:20 6822 consider series <*>: INFO 2014.02.22 10:02:20 6822 consider series <server1> INFO 2014.02.22 10:02:20 6822 consider series <server1.norepl> INFO 2014.02.22 10:02:20 6822 consider series <server2> INFO 2014.02.22 10:02:20 6822 consider series <server2.norepl> INFO 2014.02.22 10:02:20 6822 avoid series <*.norepl>: INFO 2014.02.22 10:02:20 6822 avoid series <server1.norepl> INFO 2014.02.22 10:02:20 6822 avoid series <server2.norepl> INFO 2014.02.22 10:02:20 6822 resulting series to hard link INFO 2014.02.22 10:02:20 6822 series <server1> INFO 2014.02.22 10:02:20 6822 series <server2> ....
Der einzige Unterschied zwischen der Konfiguration (siehe z.B. server1 und server1.norepl) der beiden unterschiedlichen Fälle ist „-:.norepl``. Wenn Du die Konfigurationsdateien generieren willst, musst Du zwischen den Serien, die repliziert werden sollen und denen, die nicht replziert werden sollen, unterscheiden. Aber wenn die Konfigurationsdateien erzeugt werden, muss Du wissen, wozu sind da sind - demzufolge sollte das kein Problem sein. Der Vorteil der Verwendung von Wildcards ist die Möglichkeit, Serien zu gruppieren ohne die Namen der Serien jedesmal bei einer Ergänzung wissen (und komplettieren) zu müssen.
Natürlich kannst Du durch sinnvolle Namensgebung auch mehr als zwei unterschiedliche Gruppen von Serien bilden. Dies ist nur ein einfaches Beispiel, um das Prinzip zu erläutern.
Konfigurierung der Replikationsoptionen seriesToDistribute und backupCopy mittels Wildcards
Wenn Du die Replikation von Backup Serien dynamisch angepasst konfigurieren willst (und eventuell andere Serien davon ausnehmen willst), kannst Du für die Konfiguration der Replikationen Wildcards verwenden. Im Beispiel werden die folgenden Verzeichnisse in /tmp zur Erläuterung der Verwendung von Wildcards verwendet:
$ cd /tmp/a $ mkdir server1 server1.norepl server2 server2.norepl $ storeBackupReplicationWizard.pl -m b -c c -d d -S server1
Im nächsten Schritt so konfigurieren, dass das aufgelistete Resultat erreicht wird:
$ grep -vP '\A\s*\Z|\A[#;]' b/storeBackupBaseTree.conf backupTreeName='Master Backup' backupType=master seriesToDistribute= +* -*.norepl deltaCache=/tmp/a/d
$ grep -vP '\A\s*\Z|\A[#;]' d/deltaCache.conf backupCopy0='Backup Copy' +*
$ grep -vP '\A\s*\Z|\A[#;]' c/storeBackupBaseTree.conf backupTreeName='Backup Copy' backupType=copy seriesToDistribute= +* deltaCache=/tmp/a/d
Wichtig: Erinnere Dich daran, dass Du Backups mit Replikation mit storeBackup.pl mit der Option lateLinks durchführen musst!
Wie Du feststellen kannst, ist die Syntax sehr ähnlich zu der bei otherBackupSeries. Anstelle von „+`` kannst Du auch „`` schreiben.
Die Konfiguration oben bewirkt eventuell die folgende Fehlermeldung wenn das Replikationsprogramm für das Replikationsverzeichnis aufgerufen wird:
$ storeBackupUpdateBackup.pl -b c .... ERROR 2014.02.22 11:59:48 10007 c/storeBackupBaseTree.conf series <server1> missing in <Backup Copy>, defined in /tmp/a/d/deltaCache.conf ERROR 2014.02.22 11:59:48 10007 use option --createNewSeries if you want missing series to be created automatically ....
Die einzige Möglichkeit für storeBackup, den deltaCache mit dem Replikationskopie-Verzeichnis zu vergleichen, ist, die Wildcards zu expandieren. Aber wenn die Replikation für eine neue Serie das erste Mal läuft, existiert diese Serie natürlich noch nicht im Replikationsverzeichnis. Du kannst es manuell mit mkdir anlegen (was Du wahrscheinlich nicht willst), oder das tun, was storeBackupUpdateBackup.pl Dir vorschlägt - die neue Serie automatisch erzeugen:
$ storeBackupUpdateBackup.pl -b c --createNewSeries