Brauche Hilfe beim tar-Befehl unter Linux

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Brauche Hilfe beim tar-Befehl unter Linux

    Ich möchte das Verzeichnis "/var/www/vhosts/forum/" sichern, und zwar in der Datei "/forum_backup/forum.tar.gz". Weiterhin möchte ich das Verzeichnis "uploads" nicht mit sichern. Folgenden Befehl habe ich:

    tar --exclude ./uploads/ -cfz /var/www/vhosts/forum/ /forum_backup/forum.tar.gz

    Ich erhalte aber folgende Fehlermeldungen und es wird keine Datei erzeugt:

    Quellcode

    1. tar: Removing leading `/' from member names
    2. tar: /forum_backup/forum.tar.gz: Cannot stat: No such file or directory
    3. tar: Error exit delayed from previous errors


    Wie muss ich vorgehen?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Doch, habe es angelegt. Habe es mit dem selben User angelegt, unter dem auch der tar-Befehl ausgeführt wird. Kann es trotzdem ein Rechte-Problem sein?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hi,

    muss die "Option" nicht hinten dran?

    Quellcode

    1. tar -cvfz /var/www/vhosts/forum /forum_backup/forum.tar.gz --exclude ./uploads/



    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Tatsache, das war der Fehler. Ich hatte das mit dem "exclude" aus einem Beispiel - und da war es auch vorne.

    Allerdings funktioniert das Ausschließen nicht. Es wird nun alles gesichert. Und die Zieldatei heißt nur "z".

    Edit: Folgender Fehler kommt noch:

    Quellcode

    1. tar: /forum_backup/forum.tar.gz: Cannot stat: No such file or directory
    2. tar: Error exit delayed from previous errors

    Das Archiv scheint aber ansonsten vollständig zu sein.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hi,

    hier mal die man-Page von tar

    Marcus Gräfe schrieb:

    Es wird nun alles gesichert.
    wenn ich das richtig sehe erwartet die Option --exclude nicht das Verzeichnis probiers mal so: --exclude uploads/

    Marcus Gräfe schrieb:

    Und die Zieldatei heißt nur "z".
    dann lassen wir die Zip-Opertion fürs Erste weg:tar -cvf /var/...
    Wenn das archiv dann angelegt ist wird noch manuelle gezippt mit "gzip"

    EDIT:
    Und muss nicht zuerst das Archiv und dann die Dateien angegeben werden?

    Quellcode

    1. tar -cvf /forum_backup/forum.tar /var/www/vhosts/forum --exclude uploads/
    /EDIT


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMa5“ ()

    Hab's nun hinbekommen!

    Quellcode

    1. tar -czvf /forum_backup/forum.tar.gz /var/www/vhosts/forum/ --exclude=uploads/*


    Danke!

    Edit: Das "f" muss direkt vor dem Zieldateinamen kommen! Daher kam als Dateiname "z" raus, als ich "-cfz" gemacht habe
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Habe leider doch noch ein Problem. Und zwar muss ich nun mit einer externen Ausschlussliste arbeiten, da es teilweise recht viele auszuschließende Verzeichnise pro Forum gibt, die auch noch dazu immer unterschiedlich sind.

    Ich arbeite daher nun mit "tar ... --exclude-from=exclude_forum.txt".

    Die Datei exclude_forum.txt hat folgenden Inhalt:

    Quellcode

    1. cache/*
    2. wcf/cache/*
    3. wcf/language/*
    4. wcf/templates/compiled/*
    5. wcf/acp/templates/compiled/*
    6. wcf/tmp/*
    7. wcf/uploads/*

    Problem: "cache/*" schließt auch z.B. "wcf/lib/system/cache/* aus. Wie kann ich sagen, dass es um das Verzeichnis "cache" vom Hauptverzeichnis aus gesehen geht? "/cache/*" geht nicht (also mit führendem Slash).
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hi,

    mach das tar in 2 Schritten:
    1.) Nimm die exclude_forum.txt so wie sie ist und erstelle das tar ohne das gewünschte Verzeichnis
    2.) adde das zuvor fälschlicherweise ausgeschlossene Verzeichnis zum vorhandenen tar File dazu (tar -azvf ...)

    Wenn Du das öfter's brauchst, kannst Du ja auch ein entsprechendes Skript dazu erstellen. (ala *.bat)


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Dazu müsste ich aber erstmal rausfinden, welche Verzeichnisse überhaupt fehlen. Das wäre schon die erste Schwierigkeit.

    Wenn ich die dann habe, müsste ich die alle manuell adden bzw. müsste pro Forum ein Skript schreiben. Bisher habe ich es schön automatisiert in einem Backup-Skript und einem, welches dieses Skript pro Forum 1x aufruft. Alternativ könnte ich natürlich pro Forum eine Datei mit Extradateien (was noch hinzugefügt wird) anlegen, was aber wieder Programmieraufwand wäre (die zu durchlaufen).

    Gibt es also keine Möglichkeit, den genauen Pfad anzugeben, der ausgeschlossen werden soll?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Naja, pro Forum sollte man sich ja schon mal ein bisschen Zeit nehmen um ein Backupskript zu schreiben, oder ;)
    Welches Betriebssystem hat der Server überhaupt? Bei manchen Betriebssystemen gibt es noch andere Kommandozeilen Backup Methoden.
    Debian 5.

    Ich habe ja schon ein relativ umfangreiches Skript geschrieben. Aber eben eins für alle Foren.

    Ich frage mich nur, warum die tar-Entwickler so einen Fall "übersehen" haben.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Marcus Gräfe schrieb:

    Wie kann ich sagen, dass es um das Verzeichnis "cache" vom Hauptverzeichnis aus gesehen geht?

    ./ gibt das aktuelle (Haupt-)Verzeichnis an:

    Quellcode

    1. ./cache/*
    2. [...]

    Bleibt zu hoffen, dass das Arbeitsverzeichnis nicht rekursiv mitgeändert wird (sollte nicht passieren - es wird normalerweise beim ersten Aufruf gesetzt und nicht verändert)
    Gruß
    hal2000

    hal2000 schrieb:

    ./ gibt das aktuelle (Haupt-)Verzeichnis an:

    Hatte ich schon vorher getestet, half nichts. Dann wurde gar nichts mehr ausgeschlossen.

    Chrisber schrieb:

    /var/*/cache/*

    In der Form würde es vermutlich nicht gehen, weil "wcf/lib/system/cache/" ja auch von "/var/*/cache/*" erfasst wird.

    Aber du hast mich auf eine Idee gebracht, die nun funktioniert. Meine Auschlussliste sieht nun so aus:

    Quellcode

    1. httpdocs/cache/*
    2. httpdocs/wcf/cache/*
    3. httpdocs/wcf/language/*
    4. httpdocs/wcf/templates/compiled/*
    5. httpdocs/wcf/acp/templates/compiled/*
    6. httpdocs/wcf/tmp/*


    Hätte ich drauf kommen müssen, weil in der Zieldatei der komplette Pfad gespeichert wurde (also ab "var"). Somit war das Rootverzeichnis "var" oder sogar das da drüber (das wäre dann wirklich das Rootverzeichnis von Linux). Ich dachte, wenn ich "httpdocs" sichere, gilt das als oberste Ebene.

    Danke an alle!
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum