tar - Dateien archivieren


tar vereinigt Dateien zu einer Archivdatei

Syntax: tar-cdrtxA [-Option] ... -f<Archivname> Datei ... [-Option] ...

Beschreibung:

tar-Archive stellen ein universelles Austausch-Format dar, das auch leicht entpackt (extrahiert) werden kann. tar kann zur Speicherung beliebig grosser Datenmengen eingesetzt werden, da durch die Option -M oder --multi-volume die Möglichkeit besteht, das verwendete Speichermedium bei Bedarf durch ein neues zu ersetzen.

tar unterstützt die Möglichkeiten von inkrementellen Backups, also der Teilspeicherung von Daten. Wird bei der Verwendung von tar kein Dateiname durch die Option -f spezifiziert, benutzt tar voreingestellt die Standardein- bzw. -Ausgabe. Es ist auch möglich, die Namen der zu bearbeitenden Dateien in einer externen Datei anzugeben, die tar dann einliest.

Die Namenserweiterung für Sicherheitskopien ist `~', wenn nicht mit --suffix oder der Umgebungsvariablen SIMPLE_BACKUP_SUFFIX etwas anderes eingestellt ist. Die Versionskontrolle kann mit --backup oder der Umgebungsvariablen VERSION_CONTROL gesetzt werden. Mögliche Werte sind:

t
numbered
nummerierte Sicherheitskopien.
nil
existing
nummerierte Sicherheitskopien, wenn schon nummerierte vorhanden sind, sonst einfache.
never
simple
immer einfache Sicherheitskopien.

GNU »tar« kann keine '--posix'-Archive lesen. Wenn die Umgebungsvariable POSIXLY_CORRECT gesetzt ist, sind GNU-Erweiterungen mit '--posix' nicht zulässig. Unterstützung für POSIX ist nur teilweise implementiert, rechne derzeit noch nicht damit!

ARCHIV kann DATEI, RECHNER:DATEI oder BENUTZER@RECHNER:DATEI sein; DATEI kann eine Datei oder ein Gerät (z.B. ein Streamer) sein. Die Voreinstellung für _dieses_ »tar« ist '-f- -b20'.

Optionen:

-[0-7][lmh] Laufwerk und Schreibdichte angeben.
-A
--catenate
--concatenate
»tar«-Dateien an ein Archiv anhängen
-b
--block-size=BLÖCKE
BLÖCKE à 512 Bytes pro Record.
-B
--read-full-blocks
Blockung beim Lesen ändern (für 4.2BSD "Pipes").
-c
--create
neues Archiv erzeugen.
-C
--directory=VERZEICHNIS
zu VERZEICHNIS wechseln.
-d
--diff
--compare
Dateien im Archiv und im Dateisystem vergleichen.
-f
--file=ARCHIV
Gerät oder Datei ARCHIV benutzen.
-F
--info-script=DATEI
--new-volume-script=DATEI
am Ende jedes Mediums das Skript DATEI ausführen (impliziert '-M').
-g
--listed-incremental=FILE
erzeugt eine Datei mit einer Liste der archivierten Verzeichnisse als Zeitmarke der Archivierung. Wenn die Datei bereits existiert, werden nur die Dateien archiviert, die nach dieser Zeitmarke erzeugt oder verändert wurden (spezielles GNU Format: 1. Zeile = Zeitmarke, 1. Feld = Nr. der Partition, 2. Feld = Inode des Verzeichnisses, 3. Feld = Name des Verzeichnisses).
-G
--incremental
erzeugt am Anfang des Bandarchives einen speziellen Eintrag für jedes archivierte Verzeichnis. Spezielles GNU Format.
-h
--dereference
Dateien statt symbolischer Links sichern.
-i
--ignore-zeros
Blöcke mit Nullen im Archiv ignorieren (heißt EOF).
-I
--bzip2
Archiv mit »bzip2« (de)komprimieren.
-k
--keep-old-files
verhindert das Überschreiben existierender Files beim Extrahieren aus einem Archiv.
-K
--starting-file=NAME
mit NAME im Archiv beginnen.
-l
--one-file-system
beim Erzeugen Dateisystem nicht wechseln.
-L
--tape-length=ZAHL
Medium wechseln, wenn ZAHL KBytes geschrieben sind.
-m
--modification-time
Änderungszeit beim Auspacken erhalten.
-M
--multi-volume
mehrteiliges Archiv anlegen/listen/herausholen.
-N
--newer=DATUM
--after-date=DATUM
nur Dateien jünger als DATUM sichern.
-o
--old-archive
--portability
Archiv im »V7«-Format schreiben.
-O
--to-stdout
schreibt die Dateien in die Standardausgabe.
-p
--same-permissions
--preserve-permissions
Zugriffsrechte beim Auspacken erhalten.
-P
--absolute-paths
führende `/'-Zeichen in den Dateinamen erhalten.
-r
--append
Dateien an das Archiv anhängen.
-R
--block-number
Blocknummer innerhalb des Archivs mit jeder Meldung zeigen.
-s
--same-order
--preserve-order
--preserve
zu entpackende Dateinamen wie im Archiv sortieren.
-S
--sparse
GNU-Erweiterung, die eine effektive Speicherung kleiner Dateien (Dateien mit >>Löchern<<) ermöglicht. Diese Option sollte bei Systembackups immer verwendet werden.
-t
--list
Inhalt eines Archivs anzeigen.
-T
--files-from=DATEI
Namen der zu bearbeitenden Dateien aus DATEI lesen.
-u
--update
nur Dateien anhängen, die jünger sind als ihre Archiv-Version.
-U
--unlink-first
vor dem Extrahieren erst eine gleichnamige Zieldatei entfernen, falls vorhanden. Symbolische Links werden gelöscht.
-v
--verbose
zu bearbeitende Dateien ausführlich listen.
-V
--label=NAME MUSTER
Archiv NAME erzeugen Beim Anzeigen/Herausholen ist MUSTER ein regulärer Ausdruck.
-w
--interactive --confirmation
Bestätigung für jede Aktion verlangen.
-W
--verify
überprüft nach dem Schreiben die Korrektheit eines Archivs.
-x
--extract
--get
Dateien aus Archiv extrahieren.
-X
--exclude-from=DATEI
Dateien überspringen, auf die in DATEI angegebene Muster passen.
-z
--gzip
--ungzip
Archiv mit »gzip« (de)komprimieren.
-Z
--compress
--uncompress
Archiv mit »compress« (de)komprimieren.
--atime-preserve Zugriffszeit beim Auspacken erhalten.
--backup[=TYP]

das Überschreiben von Dateien beim Extrahieren verhindern. Es werden automatisch Backups der bestehenden Dateien angelegt.

[=TYP] definiert die Art des verwendeten Backups:
t
numbered
Unterscheidung durch das Anhängen einer (wachsenden) Nummer.
nil
existing
numerierte Backups werden von dateien angelegt, von denen bereits numerische Versionen vorliegen. Sonst werden einfache Backups erzeugt.
never
simple
immer einfache Backups anlegen. Dabei wird das in der $SIMPLE_BACKUP_SUFFIX Variablen definierte Suffix verwendet. Voreingestellt ist >>˜<<.
Die Umgebungsvariable $VERSION_CONTROL steuert ebenfalls den verwendeten Backuptyp. Voreingestellt ist >>nil<<.
--checkpoint Verzeichnisnamen beim Lesen des Archivs zeigen.
--delete aus Archiv löschen (nicht auf Magnetbändern!).
--exclude=MUSTER Dateien überspringen, auf die MUSTER passt.
--force-local Archiv-Datei ist lokal, auch wenn der Name einen Doppelpunkt enthält.
--group=NAME Gruppe für hinzugefügte Dateien auf NAME setzen.
--help Hilfe anzeigen und «tar» beenden.
--ignore-failed-read unterdrückt das vorzeitige Abbrechen einer Aktion, wenn tar auf unlesbare Blöcke stösst.
--mode=RECHTE Zugriffsrechte für hinzugefügte Dateien auf RECHTE setzen.
--newer-mtime Datum und Zeit nur vergleichen, wenn sich der Datei-Inhalt geändert hat.
--no-recurse keine Verzeichnisse sichern.
--no-same-owner Eigentümer beim Auspacken auf Ausführenden setzen.
--no-same-permissions Keine Zugriffsrechte erhalten.
--null '-T' lies Null-terminierte Namen, verbiete '-C'.
--numeric-owner Zahlen für Benutzer bzw. Gruppen benutzen.
--overwrite Überschreiben vorhandener Dateiten beim Extrahieren.
--owner=NAME Eigentümer für hinzugefügte Dateien auf NAME setzen.
--posix POSIX-konformes Archiv schreiben.
--record-size=GRÖSSE GRÖSSE Bytes pro Record, Vielfaches von 512.
--remove-files löscht die Quelldateien, nachdem sie in das Archiv aufgenommen wurden.
--recursive-unlink mit der Angabe dieser Option können ganze Verzeichnisebenen entfernt werden. Die Option birgt entsprechende Risiken.
--rsh-command=BEFEHL statt «rsh» den BEFEHL benutzen.
--same-owner Eigentümer beim Auspacken erhalten.
--suffix=SUFFIX Sicherheitskopie vor dem Löschen, Namenserweiterung SUFFIX.
--totals geschriebene Bytes beim Schreiben des Archivs zeigen.
--use-compress-program=PROG Archiv durch PROG filtern (muss '-d' akzeptieren).
--version Versionsnummer anzeigen und «tar» benden.
--volno-file=DATEI Teil-Nummer in DATEI benutzen/aktualisieren.

Environment-Variablen:

$POSIXLY_CORRECT unterbindet die GNU-Erweiterungen von tar.
$SIMPLE_BACKUP_SUFFIX Das definierte Suffix wird bei einfachen Backups an den Dateinamen angehängt.
$VERSION_CONTROL steuert den Backuptyp bei der Verwendung der Option --backup.
$TAPE Einige Versionen des Programms verwenden diese Variable zur Kennzeichnung des voreingestellten Speicherlaufwerks.
($GZIP) gzip verwendet diese Variable zur Speicherung der Grundeinstellungen von Optionen.

Reihenfolge und Art der Optionenvergabe:

   *    Modusoperationen müssen zuerst angegeben werden. Dies sind c, t, x, r, -A, -d, --delete, -u sowie deren entsprechende Langformate.
   *    Langformen der Optionen werden mit zwei >> -- <<-Zeichen eingeleitet. Sie müssen nicht wie sonst üblich nach den Kurzformen angegeben werden. Sie können abgekürzt werden, sofern die Abkürzung eindeutig ist. Ist dies nicht der Fall, gibt tar eine Fehlermeldung aus.
   *    Optionen, die Argumente verwenden, müssen diese auch enthalten. Ansonsten werden die nachfolgenden Angaben (Optionen) entsprechend interpretiert. Ein oder mehrere Leerzeichen bzw. ein Gleichheitszeichen zwischen Option und Argument sind optional.
   *    Enthalten Argumente Muster, müssen diese vor der Shell-Expandierung geschützt werden. Hierzu können die Muster entweder in Anführungszeichen bzw. jedes der Shell-Sonderzeichen durch ein >> \ << eingeschlossen werden.
   *    Kurzoptionen können zusammengasst werden, wobei die einleitenden >> - << bis auf das erste entfallen.
   *    In zusammengefassten Optionen darf nur eine Angabe ein Argument verwenden. ZB: tar -xvvfmyArchiv.tar.
   *    Sollen Optionen im alten Stil, also ohne führendes >> - << angegeben werden, müssen diese Optionen unmittelnbar hintereinanden angegeben werden, und sie müssen vor allen anderen Optionen stehen. Die Optionen verwenden die gleichen Zeichen wie die Kurzoptionen. Die Wirkung unterscheidet sich in manchen Fällen.
 

 

Anmerkungen:

Mit tar steht dem Anwender ein äußerst leistungsfähiges und zuverlässiges Programm zur Verfügung. Zahlreiche Erweiterungen kommen zum Einsatz. So basieren die vielfältigen Linux-Archive wie rpm (Red Hat Package Manager) oder deb (Debian-Archive) im wesentlichen auf tar-Archiven. Viele Backup-Tools wie afio, amanda, taper, tbackup basieren auf tar. Die tar-Originaldokumentation ist entsprechend umfangreich und besteht aus ca. 140 Seiten. Sie ist in der Datei tar.texi enthalten.


Dateien in Archiven speichern:

Dateien werden in tar-Archiven sequentiell gespeichert. Daher
  • können mehrere Versionen einer Datei (unter dem gleichen Namen) im selben Archiv vorhanden sein,
  • ist die Reihenfolge der Dateien im Archiv nur von der Reihenfolge des Einlesens abhängig. Neue Dateien werden immer am Ende ahgehängt (s. auch die Optionen --update und --append),
  • überschreiben später gespeicherte Files beim Extrahieren ältere (im Archiv weiter vorn gespeicherte) Files mit dem gleichen Namen (s. auch die Optionen --backup und -k).

Um Dateien nur einfach (und einmalig) in einem tar-Archiv zu speichern, ist es notwendig, vor --append oder --update Operationen die älteren Versionen mittels --delete zu entfernen.


Dateien aus Archiven extrahieren:

Dateien werden aus Archiven sequentiell entpackt. Dateien gleichen Namens, die später in das Archiv aufgenommen waren (und damit weiter hinten stehen), überschreiben beim Extrahieren bereits entpackte files.

Exit Status:

Bedeutung der Rückgabewerte:
Null: Die spezifizierte Aktion ist erfolgreich und fehlerfrei verlaufen.
2: Wird bei den meisten nicht erfolgreichen Aktionen generiert, zB. bei Zugriff auf ein nicht vorhandenes Archiv oder wenn das Extrahieren einer nicht im Archiv vorhandenen Datei versucht wurde.
128: Wird bei nicht erfolgreichen Netzwerkoperationen erzeugt.

Gespeicherte Dateinamen:

Sofern nich die Option -P oder --absolute-paths angegeben wurde, speichert tar die Namen der im Archiv enthaltenen Dateien relativ, indem eine führendes >> / << entfernt wird. Desweiteren wird der Pfad mit als Namensbestandteil aufgefasst.

Siehe auch:  bzip   cpio   gzip

Beispiele für die Nutzung des Programms:

Alle tar-Archive im Verzeichnis entpacken:

user@sonne> tar xvf *.tar

 

Alle tar.gz-Archive im Verzeichnis entpacken:

user@sonne> tar xzvf *.tar.gz

 

Datei (qttest.cpp) als tar.gz verpacken:

user@sonne> tar -cvzf lihelp.tar.gz qttest.cpp

 

tar.bz2-Archiv entpacken:

user@sonne> tar -xyvf archiv.tar.bz2

 

tar.gz Archiv entpacken:

user@sonne> tar xzf kdebase-1.1.2.tar.gz

 

Verzeichnis als tar.gz verpacken:

user@sonne> tar -cvzf lihelp.tar.gz *

 

Autor: Omega-X