Teer mit relativen Pfaden

24

Ich versuche, ein Archiv mit tar mit relativen Pfaden zu erstellen. Ich benutze den folgenden Befehl:

tar czf ~/files/wp/my-page-order.tar.gz -C ~/webapps/zers/wp-content/plugins/ ~/webapps/zers/wp-content/plugins/my-page-order

Die archivierten Dateien haben jedoch noch absolute Pfade. Wie kann ich tar mit relativen Pfaden verwenden?

Mert Nuhoglu
quelle

Antworten:

24

'~' wird durch die Shell erweitert. Verwenden Sie nicht '~' mit -C:

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~ \
       webapps/zers/wp-content/plugins/my-page-order

(tar beinhaltet webapps / zers / wp-content / plugins / mein-seiten-ordnungspfad) oder

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~/webapps/zers/wp-content/plugins \
       my-page-order

(tar wird den Pfad für die Bestellung meiner Seite enthalten)

Oder einfach erstmal CD ....

cd ~/webapps/zers/wp-content/plugins
tar czf ~/files/wp/my-page-order.tar.gz my-page-order
symcbean
quelle
2
Erklärung ist falsch. Dabei spielt es keine Rolle, dass ~ um die Shell erweitert wird. Entscheidend ist, dass das -Caktuelle Arbeitsverzeichnis geändert wird, wie in Antwort von Lekensteyn erläutert.
Piotr Dobrogost
1
Nein - schauen Sie sich die ursprüngliche Frage an - das letzte Argument ist ein absoluter Pfad.
Symcbean
Na und? Beide Instanzen von ~ werden erweitert, und der gesamte Aufruf funktioniert nicht wie erwartet, nur weil das letzte Argument bei der Verwendung -Cals relativer Pfad hätte angegeben werden müssen, sondern stattdessen als absoluter Pfad. Die Verwendung von ~ hier spielt überhaupt keine Rolle.
Piotr Dobrogost
11

-C new_cwdändert das aktuelle Arbeitsverzeichnis in new_cwd. Die folgenden Argumente werden dann relativ zu ausgewertet new_cwd.

tar czf ~ / files / wp / meine-seitenreihenfolge.tar.gz -C ~ / webapps / zers / wp-content / plugins / meine-seitenreihenfolge

Lekensteyn
quelle
4

Die Nicht-GNU-Lösung tarhat keine -zOption, um nur zu erwähnen:

pushd ~/files/wp; tar cvf - my-page-order | gzip > my-page-order.tar.gz && rm -rf my-page-order; popd

EDIT (mit &&und ohne rm):

pushd ~/files/wp && tar cvf - my-page-order | gzip > my-page-order.tar.gz && popd
Mattia72
quelle
(1) Die Frage sagt nichts darüber aus rm; Warum nehmen Sie es in Ihre Antwort auf? (2) Ihre Antwort archiviert das falsche Verzeichnis. (3) Warum haben sich geändert Sie tar -zzu tar | gzip? (4) Solange Sie verwenden werden &&, sollten Sie wahrscheinlich auch &&nach dem verwenden pushd.
G-Man sagt, dass Monica
(1) Sie haben Recht (2) wirklich? Welches ist das Gute? (3) Das ist der Punkt: Die Nicht-GNU-Version von tar (z. B. unter Unix) hat keine -z (4), die ich wahrscheinlich &&in einem Skript verwenden würde, aber ich denke, dies ist in einem "
Einzeiler
(2) OP will ~/webapps/zers/wp-content/plugins/my-page-ordermit Ausgabe nach archivieren ~/files/wp/my-page-order.tar.gz; Ihre Befehlsarchive ~/files/wp/my-page-order. (3) Vielen Dank, dass Sie Ihre Antwort bearbeitet haben, um zu erklären, warum Sie sie verwendet haben gzip.
G-Man sagt, dass Monica