Backup unvollständig?

09/08/2016 - 13:42 von Magnus Warker | Report spam
Hallo,

ein Backup-Skript führt dieses Kommando aus:

( tar cvz /mws/stg/bak/* | gpg -c --passphrase "test" | split -a3
-b1800G -d - /mws/dsk/tmp/2016-08-09-04-30-54.tgz.gpg- ) 2>&1 | tee
/mws/log/bak.log

Dabei schreibt tar für jede gesicherte Datei eine Zeile in die Datei
bak.log.

Zum Testen wird anschliessend folgendes Kommando ausgeführt:

( cat /mws/dsk/tmp/*.gpg-??? | gpg -d --passphrase test | tar tvzC
/mws/dsk/tmp/test ) 2>&1 | tee /mws/log/res.log

Dabei schreibt tar für jede Datei im Backup eine Zeile in die Datei res.log.

Nun sollten die Anzahl Zeilen in beiden Log-Dateien einigermassen nahe
beieinander sein. Natürlich gibt es Besonderheite, z. B. meldet tar beim
Backup "tar: Removing leading `/' from member names" und gpg meldet
"gpg: encrypted with 1 passphrase". Aber die Zahlen sollten trotzdem
nahe beieinander sein. Sind sie aber nicht:


$ cat bak.log | wc -l
968249
$ cat res.log | wc -l
968131

Sie liegen um mehr als 100 auseinander. Das beunruhigt mich. Die
Unterschiede konnte ich noch nicht identifizieren, zumal die Formate der
beiden Ausgaben von tar sehr unterschiedlich sind.

Wie kann man das weiter eingrenzen und wie verifizieren, dass das Backup
ok ist?

Danke
Magnus
 

Lesen sie die antworten

#1 Helmut Waitzmann
09/08/2016 - 16:46 | Warnen spam
Magnus Warker :

ein Backup-Skript führt dieses Kommando aus:

( tar cvz /mws/stg/bak/* | gpg -c --passphrase "test" | split -a3
-b1800G -d - /mws/dsk/tmp/2016-08-09-04-30-54.tgz.gpg- ) 2>&1 | tee
/mws/log/bak.log

Dabei schreibt tar für jede gesicherte Datei eine Zeile in die Datei
bak.log.



»tar« schreibt dort nicht nur die Dateiliste hinein, sondern auch
alle Fehlermeldungen, die es ausspuckt; und auch alle anderen
Beteiligten schreiben ihre Fehlermeldungen dort hinein.

Hattest Du nicht kürzlich zu diesem Kommando (Betreff: tee erzeugt
leere Datei) gefragt? Antworten, wie man die Dateiliste von den
Fehlermeldungen trennt, gab es in de.comp.os.unix.shell
(Followup-To von Thomas 'PointedEars' Lahn). Sind die Dir
vielleicht durch die Lappen gegangen?

In <news: findest Du
eine Möglichkeit, wie man die Dateiliste getrennt von den
Fehlermeldungen erhalten kann. Das hilft Dir in zweierlei
Hinsicht:

* Die Dateiliste ist nicht mit Fehlermeldungen durchsetzt.

* Die Fehlermeldungen sind nicht in der Dateiliste versteckt,
sondern können von Dir gelesen werden.

Zum Testen wird anschliessend folgendes Kommando ausgeführt:

( cat /mws/dsk/tmp/*.gpg-??? | gpg -d --passphrase test | tar tvzC
/mws/dsk/tmp/test ) 2>&1 | tee /mws/log/res.log



Was beabsichtigst Du beim »tar«‐Aufruf mit dem Schalter »C« mit
Parameter »/mws/dsk/tmp/test«?

Dabei schreibt tar für jede Datei im Backup eine Zeile in die
Datei res.log.



Es schreibt darüber hinaus alle Fehlermeldungen hinein. Und auch
die anderen Beteiligten schreiben ihre Fehlermeldungen hinein.
Das hat zwei Nachteile:

* Die Dateiliste ist mit Fehlermeldungen verschmutzt.

* Die Fehlermeldungen verstecken sich vor Dir in der Dateiliste.

Nun sollten die Anzahl Zeilen in beiden Log-Dateien einigermassen nahe
beieinander sein. Natürlich gibt es Besonderheite, z. B. meldet tar
beim Backup "tar: Removing leading `/' from member names" und gpg
meldet "gpg: encrypted with 1 passphrase". Aber die Zahlen sollten
trotzdem nahe beieinander sein. Sind sie aber nicht:

$ cat bak.log | wc -l
968249
$ cat res.log | wc -l
968131

Sie liegen um mehr als 100 auseinander. Das beunruhigt mich. Die
Unterschiede konnte ich noch nicht identifizieren, zumal die Formate
der beiden Ausgaben von tar sehr unterschiedlich sind.

Wie kann man das weiter eingrenzen



Halte beim Backup und beim Überprüfen die Fehlermeldungen von
der Dateiliste getrennt, damit Du sie lesen kannst. Erzeuge beim
Backup die Dateiliste mit den Dateinamen, die Du nachher im Archiv
vorfindest.

und wie verifizieren, dass das Backup ok ist?



Was meinst Du damit?

* Überprüfen, dass keine Fehler aufgetreten sind? Sieh nach, dass
beim Backup und beim Anzeigen der Dateiliste im Archiv keine
Fehlermeldungen aufgetreten sind.

* Überprüfen, dass alle zu archivierenden Dateien im Archiv sind?
Gestalte den Aufruf von tar so, dass wirklich alle Dateinamen
erwischt werden:

tar cvz /mws/stg/bak/*

erfasst nicht alles, was in /mws/stg/bak/ enthalten ist.
Dateinamen, die auf das Muster »/mws/stg/bak/.*« passen, werden
nicht erfasst. Ich würde Dir statt dessen

tar cvz /mws/stg/bak/.

empfehlen, oder, wenn man schon dabei ist,

tar cvzC / mws/stg/bak/.

Dann wird man auch »tar: Removing leading `/' from member names«
los.

Achtung! Ist »/mws/stg/bak« kein Verzeichnis, sondern ein
symbolic link (auf ein Verzeichnis), würde (jedenfalls bei gnu-tar
1.23) mit

tar cvz /mws/stg/bak/

oder

tar cvzC / mws/stg/bak/

nur das symbolic link archiviert! Deswegen schlage ich

tar cvzC / mws/stg/bak/.

vor.

Das hat allerdings den etwas unschönen Effekt, dass der Name des
Verzeichnisses »/mws/stg/bak/« im Archiv »mws/stg/bak/./« ist und
alle darin enthaltenen Dateinamen mit »mws/stg/bak/./« beginnen.

Und wieder: Das ist eigentlich nichts Linux‐Spezifisches. Daher
schlage ich Crossposting und Followup-To nach
de.comp.os.unix.shell vor.

Ähnliche fragen