PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cpio, tar - Zeitreise in die Vergangenheit?



sutterp
04-07-2007, 03:40
Ich soll aus einem Dateiverzeichnis ganz bestimmte Dateien sichern. Ich hab das mit find und tar versucht, scheine aber damit auf dem Holzweg zu sein, wohingegen find und cpio eine einfache Loesung zulassen.

Dabei bin ich auf folgendes Problem gestossen:

Details der Datei:

~> ls -la tips
-rw-r--r--**1*sutterp*sopac*10953*2006-01-01*16:07*tips

Erstellen des tar Archivs:

~> tar cfv Test.tar tips
tips

Anschauen des Inhalts des tar Archivs

~> tar tfv Test.tar
-rw-r--r-- sutterp/sopac 10953 2006-01-01 16:07:17 tips

Jetzt mach ich dasselbe, benuetze jedoch cpio anstatt tar.

Entferne das Archiv.

~> rm Test.tar

Erstellen des archivs mit cpio


~> echo tips | cpio -o -F Test.tar --format tar
25 blocks

Na, schauen wir mal was generiert wurde


~> tar tfv Test.tar
-rw-r--r-- 500/500*******10953*1971-12-24*02:30:13*tips

1. Wir sind in der Vergangenheit
2. UID und GID sind falsch.
3. Die Daten selbst scheinen intakt zu sein

Frage 1: Warum?

Frage 2: Wie macht mans mit cpio richtig?

Vielen Dank.

Peter

sutterp
05-07-2007, 12:16
Hmmm, weiss denn Keiner was oder warum?

jan61
19-07-2007, 00:00
Hmmm, weiss denn Keiner was oder warum?

Ich habe das gerade mal bei mir durchgespielt, die IDs stimmen, aber die Zeiten sind wie bei Dir verkorkst. Ich halte das für einen Bug. Was mir allerdings nicht in den Kopf will: Wieso sicherst Du die Daten mit cpio, um sie dann später wieder mit tar entpacken zu wollen? Wenn Du den cpio ohne die Option --format tar aufrufst und dann später wieder mit cpio extrahierst, dann passen auch die Zeiten (ggf. mit --preserve-modification-time).

Eine andere Frage: Du weisst schon, dass Du auch den GNU tar mit Dateilisten aus einem find heraus füttern kannst?
echo attr.c | tar -T - -cvf Test.tarJan

sutterp
19-07-2007, 03:28
Vielen Dank,

Ja, dann passen die Zeiten, aber soviel ich ersehen konnte, die UIDs und GIDs werden auf den Benutzer gesetzt welcher die Daten zurueckspielt.

Das mit find und tar hab ich nicht ans laufen bekommen.

Peter

jan61
19-07-2007, 23:03
Vielen Dank,

Ja, dann passen die Zeiten, aber soviel ich ersehen konnte, die UIDs und GIDs werden auf den Benutzer gesetzt welcher die Daten zurueckspielt.

Das mit find und tar hab ich nicht ans laufen bekommen.

Peter

Das Thema UID / GID steht in der man-Page:
--no-preserve-owner
In copy-in mode and copy-pass mode, do not change the ownership of the files;
leave them owned by the user extracting them. This is the default for non-root
users, so that users on System V don't inadvertantly give away files.
Was klappt denn bei Dir mit find / tar nicht? Du musst allerdings beachten, dass es sich bei der Option -T um eine GNU-tar-Erweiterung handelt, die tar-Kommandos auf Solaris & Co. können das IIRC nicht. Notfalls kannst Du ja mal schauen, ob ein gtar auf Deinem System existiert. Wenn es ein GNU-tar ist:

find /pfad/zum/verzeichnis -print | tar -T - -cvf /pfad/zur/tar/dateiJan