tar soll meine symbolischen Links erhalten

Software besorgen und anwenden
Post Reply
Message
Author
micbur
Posts: 86
Joined: 05. Jun 2004 15:55

tar soll meine symbolischen Links erhalten

#1 Post by micbur »

Hallo,

ich habe mir ein Bash-Script geschrieben, dass verschiedene Verzeichnisse in ein Backupverzeichnis zippt. Nun auch das etc-Verzeichnis. Leider bleiben die symbolischen Links darin nicht erhalten wie ich nun feststellen musste, als ich das backup wieder einspielen wollte.

Die Man-Pages geben nicht viel her und Google auch nicht, daher muss ich jetzt mal fragen.

Wie bringe ich TAR dazu auch meine symbolischen Links zu erhalten?

Ciao, micbur

komsomolze
Posts: 430
Joined: 03. Mar 2006 23:16

#2 Post by komsomolze »

Hallo,

Wie sieht Dein 'tar'-Befehl aus?
habe hier tar-1.14 (sarge), keine Probleme damit Links zu verpacken.
('tar cf ETC.tar /etc/') Entpacken dito.

Darf der job die Links lesen (Benutzer?)?

man-page tar: Einzige Referenz auf "links": '-h'/'--dereference'

micbur
Posts: 86
Joined: 05. Jun 2004 15:55

#3 Post by micbur »

Hallo,

meine Befehlszeile sieht so aus:
tar -pcvz --file=$TARGET_FILENAME --remove-files $TMP_DIR

--- edit
OK, ich glaube, ich kann mein Problem besser beschreiben.

Wenn ich ein Backup anlege und in meinem Verzeichnis ist ein Symlink, dann wird im Backup der Symlink zur Datei/Verzeichnis umgewandelt. Tar folgt dem Symlink und kopiert den Inhalt dann an die Stelle. Das ist unpraktisch. Wenn ich ein Symlink auf ein Verzeichnis habe, dann wird das gesamte Verzeichnis kopiert.

Das soll also nicht geschehen, der Symlink soll erhalten bleiben.
Würde es diese Zeile tun?
tar -hpcvz --file=$TARGET_FILENAME --remove-files $TMP_DIR
---

Ciao, micbur

komsomolze
Posts: 430
Joined: 03. Mar 2006 23:16

#4 Post by komsomolze »

Hallo nochmal,

Der Schalter

Code: Select all

 '-h'/'--dereference'
soll eigentlich für genau das von Dir bemängelte Verhalten dasein: Statt Links zu behandeln sollen die referenzierten Dateien/Verzeichnisse bearbeitet werden.

Versuch es mal damit, vielleicht ist Deine tar-Version (welche?, welches OS?) genau anders kompiliert.

Oder hast Du vielleicht einen 'alias' anstatt des tar gesetzt (in der Art: alias tar='tar h')?

micbur
Posts: 86
Joined: 05. Jun 2004 15:55

#5 Post by micbur »

Hallo,

kein Alias für tar vorhanden.

Code: Select all

[cofdb01]# tar --version
tar (GNU tar) 1.13.25
Und was es für ein Linux ist, kann ich dir nicht sagen. War vielleicht mal ein RedHat, aber das ist eine Vermutung. Uptime 385 days, und das nur, weil es vor einem Jahr einen Datenbankfehler gab.

Ciao, micbur

jsdop

#6 Post by jsdop »

benutze dafür am besten cpio.
das ist für backups besser geeignet und die links kann man damit auch erhalten.

komsomolze
Posts: 430
Joined: 03. Mar 2006 23:16

#7 Post by komsomolze »

jsdop:
benutze dafür am besten cpio.
das ist für backups besser geeignet und die links kann man damit auch erhalten.
Widerspruch: cpio ist "anders", im Grunde erfüllen beide ihren Zweck. Hier geht es um ein spezielles Problem in tar, welches scheinbar distributionsspezifisch oder versionsabhängig ist (Behandlung der Links).

@micbur
ich habe hier für sarge-tar-1.14 eine Manpage vom 22.September 1993.
Wenn Deine dieselbe Version ist und dieses spezifische Verhalten nicht beschreibt, vielleicht hilft ein

Code: Select all

tar --help
EDIT: fedora-4: tar-1.15.1

micbur
Posts: 86
Joined: 05. Jun 2004 15:55

#8 Post by micbur »

Hallo,

wie gesagt, welche Distri, das weiß ich nicht.
Ganz unten an der Manpage steht ein Datum: 30 October 2000 TAR(1). Ich hoffe, es ist nicht das Datum der (app) Manpage.

$> tar --version liefert:
tar (GNU tar) 1.13.25
Copyright © 2001 Free Software Foundation, Inc.

Ich habe auch nochmal nachgeschaut, es ist wirklich das einzigste tar auf diesem System. Also aktuell ist sowieso v-1.15.91. Würde es damit besser gehen?

Ciao, micbur

PS: bald bin ich soweit, dass ich die Manpage hier einfüge. Wahrscheinlich lese ich wieder nicht richtig :-(

komsomolze
Posts: 430
Joined: 03. Mar 2006 23:16

#9 Post by komsomolze »

Hallo nochmal,
tar (GNU tar) 1.13.25
welche tar-Version soll laut rpm auf Deinem System sein?

Code: Select all

rpm -qa | grep tar
(nicht dass Dein tar-1.13.25 eine rootkit-Version ist)
google: "tar (GNU tar) 1.13.25" ergab einige Seiten über buggy-Version.

http://fedora.redhat.com/Download/mirrors.html
(einfach ausprobieren, oft klappt so etwas; aber nicht installieren, sondern nur das binary aus dem Paket ausprobieren)
(auf meinem sarge konnte ich tar-1.15.1 nicht ausführen, was aber nicht heisst)

EDIT:
Um herauszubekommen, welche OS-Version auf deinem Rechner läuft:

Code: Select all

uname -a (erste Hinweise durch die Kernelversion)
/etc/issue und /etc/issue.net (meist)
/etc/version oder /etc/redhat-version oder ähnlich (kenne kein RedHat)
Pakete aus dem Update-Cache (falls noch vorhanden) durchsehen
rpm -qa (einige Versionsnummern vergleichen; besonders Basis-Pakete: glibc, X usw.)
Beispiel:
FC4: glibc-2.3.5-10 upd: 2.3.6-3
FC5; glibc-2.4-4 upd: 2.4-8

micbur
Posts: 86
Joined: 05. Jun 2004 15:55

#10 Post by micbur »

Hallo,

bei rpm ist Version tar-1.13.25-13 registerit.
Dann werde ich mal ne neue Version installieren.

Ist übrigends ein RedHat. Vielen Dank.

Ciao, micbur

micbur
Posts: 86
Joined: 05. Jun 2004 15:55

lösung gefunden

#11 Post by micbur »

Hallo,

also das tar, was ich hatte und das neue tar funktionieren super. Der Fehler lag woanders.
Ich hatte ein Backup-Script geschrieben, dass auf entfernten Rechnern ein Verzeichnis sichert.

sh backup <host> <verz>

Nunja, ich benutzte scp, um die Dateien temporär lokal zwischenzuspeichern und scp war es, dass die Links dereferenzierte. Nun nutze ich rsync und es geht super.

Merke, scp verfolgt Links und dereferenziert sie, rsync nicht.

Ciao, micbur

Post Reply