Frage zur Parametrisierung von "tar"

  • Hallo zusammen,

    ich möchte gerne mit dem Befehl "tar" ein Backup von meinem Raspberry machen. Ich verwende diesen Aufruf:

    Code
    tar -cpz --one-file-system -P -f ${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d-%H%M%S).tgz 1 2> /var/log/BackupLog/backup.log \

    wobei die Konstanten "BACKUP_PFAD" und "BACKUP_NAME" gesetzt sind (und auch stimmen).

    Wie Ihr Euch denken könnt, funktioniert das trotzdem nicht, denn sonst würde ich das ja nicht posten :D

    Der Befehl rennt erst mal los, bricht dann aber irgendwann ab. Ich bekomme folgende Fehlermeldungen im Logfile angezeigt (mehr steht übrigens nicht drin):

    Code
    tar: 1: Kann stat nicht ausführen: Datei oder Verzeichnis nicht gefunden
    tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler

    Ich habe die Befürchtung, dass die Parametrisierung nicht stimmt und dass ich versehentlich verschiedene Parameter miteinander verwende oder auch einzelne Parameter vielleicht an falschen Stellen, so dass tar damit nicht klar kommt.

    Die einzelnen Parameter

    Code
    -c für create
    -p für die Rechteübernahme innerhalb des Backups
    -z für die Kompression mit gzip
    -P für die Beibehaltung der "/" am Anfang der einzelnen zu sichernden Dateien
    -f für "File" (denke, das macht mit dem -c Sinn, wissen tu' ich es aber nicht)
    --one-file-system (versteht sich von selbst, denke ich)

    möchte ich aber schon so nutzen, da sie für meinen Anwendungsfall genau die Funktionen sind, die ich gebrauchen kann. Nur wie muss die Syntax korrekt lauten?!

    Ich würde mich über eine Hilfe hierzu sehr freuen! Vielen Dank im Voraus.

  • Was ist ${BACKUP_PFAD}

    Ist das ein Mountpoint ?
    Dann exclude diesen Mountpoint

    Code
    --exclude=${BACKUP_PFAD}
    oder
    --exclude=/mnt/backup

    Sonst versucht tar auch sein eigenes archiv zu archivieren und es gibt nen Fehler ;)

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Einmal editiert, zuletzt von Der_Imperator (11. November 2014 um 07:36)

  • Was soll das "..).tgz 1 2> /var.." bewirken?
    Du willst den normalen Output (stdout=1) *und* stderr=2 in ein Logfile schreiben?

    Verwende einfach:

    tar -cpz --one-file-system -P -f ${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d-%H%M%S).tgz 2>&1 >/var/log/BackupLog/backup.log

  • Hallo zusammen!

    Erst mal vielen Dank für die Ideen zu diesem Thema. Ich fange mal vorne an:

    Das mit dem Verbose-Parameter ist schon mal eine gute Idee. Das setze ich einfach mal. Gibt mehr Analysemöglichkeiten.

    Zur Idee mit dem Exclude: Ich wollte es hier nicht zu komplex machen, stelle aber fest, dass ich dadurch Informationen geschludert habe. Entschuldigung!

    Der ganze Aufruf innerhalb meines Scripts sieht wie folgt aus, und müsste doch damit richtig exkludiert sein, oder?

    Code
    tar -cpzv --one-file-system -P -f ${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d-%H%M%S).tgz  1 2> /var/log/BackupLog/backup.log \
                    --exclude=${BACKUP_PFAD} \
                    --exclude=/proc \
                    --exclude=/lost+found \
                    --exclude=/sys \
                    --exclude=/mnt \
                    --exclude=/media \
                    --exclude=/dev \
                    /

    Zur Gegenfrage bzgl. des "...).tgz 1 2> /var...": Das soll bewirken, dass der Erfolg dieser Backup-Maßnahme in /var/log/BackupLog/backup.log geschrieben wird. NICHT der normale Output, der aber ohne den Parameter "v" ja ohnehin recht ruhig war :-). Ich erkenne zwar den Unterschied bei Deinem Aufruf, weiß aber ehrlich gesagt nicht genau, was das jetzt bewirkt.

    Einmal editiert, zuletzt von Dr.Sterni (11. November 2014 um 09:29)


  • tar sagt doch klipp und klar: ES GIBT KEIN DIRECTORY DAS 1 HEISST !

    Schreien gilt nicht :D

    Möchtest Du mir damit sagen, dass da ein Leerzeichen zuviel war? Oder was war nun das Problem dieser Logfile-Ausgabe? Ich hatte ja oben geschrieben, dass ich die Unterschiede in der Schreibweise sicherlich erkenne, aber das heißt ja nicht, dass ich es auch verstehen muss. Das möchte ich aber...

    Danke Dir!

  • Keine Ahnung was du mit

    tar -cpzv --one-file-system -P -f ${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d-%H%M%S).tgz 1 2> /var/log/BackupLog/backup.log

    bewirken wolltest. Umleitungen der Ausgabekanäle?

    1 = stdout
    2 = stderr

    Normalerweise leitet man stderr auf stdout um und das ganze dann in ein Logfile oder /dev/null

    2>&1

    ^Leitet stderr auf stdout um


    > /var/log/logfile 2>&1

    ^Leitet stdout in die Datei /var/log/logfile um und anschließend wird ebenfalls stderr dort hin umgeleitet


    Summa Soumarum:
    Deine oben vewendete Zeile ergibt so jedenfalls keinen Sinn. 1 2 werden als Verzeichnisse interpretiert die (wie auch die Fehlermeldung sagt) nicht existieren.

    Richtiger wäre also:

    Code
    tar -cpzv --one-file-system -P -f ${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d-%H%M%S).tgz >/var/log/BackupLog/backup.log 2>&1

    Siehe dazu auch:
    http://wiki.ubuntuusers.de/Shell/Umleitungen
    https://wiki.archlinux.de/title/Umleitungen

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!