[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Pakete_installieren: Pakete installieren] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] Das Programm [https://www.gnu.org/software/tar tar] {en} steht für '''T'''ape '''ar'''chiver. Es wurde ursprünglich geschrieben, um Daten auf [wikipedia:Bandlaufwerk:Bandlaufwerken] zu sichern. Auch heute noch ist es das beliebteste Werkzeug zum Archivieren von Daten auf Linux-Systemen. Der Hauptvorteil eines '''tar'''-Archivs gegenüber dem in der Windowswelt weitverbreiteten ZIP-Format ist, dass die Benutzerrechte einer Datei mitgesichert und beim Entpacken wiederherstellt werden (allerdings nur, wenn Quelle und Ziel die Unix-Dateirechte unterstützen). Ein '''tar'''-Archiv wird oftmals auch als Tarball bezeichnet. In Verbindung mit [:gzip:] oder [:bzip2:] trifft man oft auf Dateien mit der Endung ''' *.tar.gz''', '''.tgz''' oder '''tar.bz2'''. Diese Archivdateien sind zusätzlich komprimiert worden, da tar selbst keine Komprimierung anbietet. = Funktion = Das Programm tar schreibt alle Dateien sequenziell (= hintereinander) in ein Archiv. Neue Dateien werden immer an das Ende gehängt. Somit ist es möglich (aber selten), dass in einem '''tar'''-Archiv mehrere Dateien mit gleichem Namen, aber in anderen Versionen, vorhanden sein können. Dies kann allerdings dazu führen, dass eine Datei beim Extrahieren mehrfach mit einer jüngeren Version überschrieben wird. Abhilfe kann hier die Option `-k` bringen (siehe unten). = Installation = tar ist bei Ubuntu im Regelfall bereits in der Standard-Installation enthalten. Falls es fehlen sollte, kann es aus den offiziellen Paketquellen durch die folgenden Pakete installiert [1] werden: {{{#!vorlage Paketinstallation tar tar-doc, optional }}} = Syntax = Der allgemeine Aufruf von tar im Terminal [2] lautet: {{{#!vorlage Befehl tar OPTIONEN Datei(en) }}} = Optionen = tar kennt verschiedene Optionen, von denen im Folgenden einige aufgelistet werden: {{{#!vorlage Tabelle Option Beschreibung +++ `--help` Zeigt eine vollständige Übersicht über alle Optionen. +++ `--version` Gibt die installierte Version von tar aus. +++ `-c` Ein neues Archiv erzeugen. +++ `-d` Dateien im Archiv und im Dateisystem miteinander vergleichen. +++ `-f` Archiv in angegebene Datei schreiben / Daten aus angegebener Datei lesen. Diese Option muss die letzte sein, da die nachfolgende Zeichen als Datei interpretiert werden. Z.B. würde `-cfv` zu einer Fehlermeldung führen. Korrekt wäre `-vcf`. +++ `-g filename` für inkrementelle Backups. Schreibt zusätzlich eine Datei , in der eine Liste der bisher gesicherten Dateien ist und anhand derer festgelegt wird, welche Dateien im inkrementellen Backup gespeichert werden. +++ `-j` Archiv zusätzlich mit [:bzip2:] (de)komprimieren. +++ `-J` Archiv zusätzlich mit [:Archivmanager#Archivformate:xz] (de)komprimieren. +++ `-k` Das Überschreiben existierender Dateien beim Extrahieren aus einem Archiv verhindern. +++ `-p` Zugriffsrechte beim Extrahieren erhalten. +++ `-r` Dateien an ein bestehendes Archiv anhängen. +++ `-t` Inhalt eines Archivs anzeigen. +++ `-u` Nur Dateien anhängen, die jünger sind als ihre Archiv-Version. +++ `-v` Ausführliche Ausgabe aktivieren. Hierbei ist zu beachten, dass man dies möglichst an den Anfang des Befehls anhängt, wenn mehrere Optionen kombiniert werden. Z.B. würde `-cfv` zu einer Fehlermeldung führen. Korrekt wäre `-vcf`. +++ `-w` Jede Aktion bestätigen. +++ `-x` Dateien aus einem Archiv extrahieren. +++ `-z` Archiv zusätzlich mit [:gzip:] (de)komprimieren. +++ `-Z` Archiv zusätzlich mit `compress` (de)komprimieren. +++ `-A` Inhalt eines bestehenden Archivs an ein anderes Archiv anhängen. +++ `-C` Wechselt in das angegebene Verzeichnis. Das Archiv wird dann dort entpackt. +++ `-M` Mehrteiliges Archiv anlegen/anzeigen/extrahieren. +++ `-L` Medium wechseln, wenn `ZAHL` KBytes geschrieben sind. +++ `-W` Archiv nach dem Schreiben prüfen. }}} Eine detaillierte Beschreibung erhält man über [man:tar:`man tar`] oder [:info:`info tar`]. {{{#!vorlage Hinweis Manche Optionen wie `-r` oder `-W` funktionieren nur mit einem unkomprimiertem '''tar'''-Archiv. Archive, die zum Beispiel mit [:gzip:] komprimiert wurden, müssen ggf. zuvor entpackt werden. }}} = Beispiele = == Anlegen == * Ein Archiv mit dem Namen '''archiv.tar''' mit den Dateien '''datei_1.txt''' und allen Dateien vom Typ '''*.pdf''' anlegen: {{{#!vorlage Befehl tar -cf archiv.tar datei_1.txt *.pdf }}} * Ein Archiv mit dem Ordner '''daten''' inklusive aller Unterordner und Dateien anlegen: {{{#!vorlage Befehl tar -cf archiv.tar daten/ }}} * Ein Archiv anlegen, zwei Dateien hinzufügen und nachträglich mit [:gzip:] komprimieren: {{{#!vorlage Befehl tar -czf archiv.tar.gz datei_1.txt datei_2.txt }}} == Anzeigen == Den Inhalt eines (komprimierten) Archivs ausführlich anzeigen: {{{#!vorlage Befehl tar -tvf archiv.tar }}} == Aktualisieren == Fügt nur Dateien hinzu, wenn sie neueren Datums sind als ihr Gegenstück im Archiv: {{{#!vorlage Befehl tar -uf archiv.tar daten }}} Leider werden bei einer Aktualisierung keine Unterverzeichnisse berücksichtigt! == Ändern == Einem Archiv eine Datei hinzufügen: {{{#!vorlage Befehl tar -rf archiv.tar datei_1.txt }}} == Vergleichen == Den Inhalt eines Archivs mit dem Dateisystem vergleichen: {{{#!vorlage Befehl tar -dvf archiv.tar }}} Der Befehl sollte in dem Verzeichnis ausgeführt werden, in dem die Dateien, die im Archiv liegen, gespeichert sind. == Extrahieren == {{{#!vorlage Warnung tar überschreibt beim Extrahieren Dateien und Verzeichnisse ohne Nachfrage, daher * Inhalt vor dem Extrahieren überprüfen (siehe [#Anzeigen Beispiel "Anzeigen"]) oder * vor dem Extrahieren ein neues Verzeichnis anlegen und dorthin wechseln. }}} * Alle Dateien aus einem Archiv im aktuellen Ordner extrahieren: {{{#!vorlage Befehl tar -xf archiv.tar }}} * Alle Dateien in ein bestimmtes Verzeichnis extrahieren (das Ziel-Verzeichnis muss bereits existieren): {{{#!vorlage Befehl tar -xzf archiv.tar.gz -C /PFAD/ZUM/ORDNER }}} * Eine bestimmte Datei aus einem Archiv extrahieren: {{{#!vorlage Befehl tar -xzf archiv.tar.gz PFAD/DATEINAME }}} Dabei muss `PFAD/DATEINAME` genau so in der Archiv-Datei existieren. Ein angegebenes Unterverzeichnis `PFAD` wird im aktuellen Verzeichnis (bei relativem Pfad) automatisch erstellt. * Inhalt direkt in den Zeilordner entpacken {{{#!vorlage Befehl tar xvfz example.tar.gz -C /PFAD/ZUM/ORDNER --strip-components=1 }}} Die Option -C beinhaltet das Verzeichnis wohin ausgepackt werden soll. Durch die Option --strip-components=1 wird der Inhalt direkt in das gewünschte Verzeichnis ausgepackt. Ohne dabei ein Hauptverzeichnis anzulegen. = Archiv aufteilen und zusammenfügen = Um Archive unter GNU/Linux aufzuteilen, wird das Programm [:split:] genutzt. Zusammengefügt werden sie dann mit [:cat:]. Beispiel für das Zusammenfügen von einzelnen tar - Files: {{{ Anleitung.tar.001 Anleitung.tar.002 Anleitung.tar.003 Anleitung.tar.004 Anleitung.tar.005 }}} {{{#!vorlage Befehl cat Anleitung.tar.00{1..5} > Anleitung.merged.tar }}} Das mit [:cat:] neu zusammengefügte '''tar'''-Archiv kann anschließend mit dem [:Archivmanager:] entpackt werden. ##aasche: obsolet? ##{{{#!vorlage Hinweis ##Eine grafische Lösung für den Dateimanager [:Nautilus:] gibt es hier: [:Nautilus/Skripte/Splitten_und_Vereinigen:] ##}}} = Multi-Volume-Archive = Eine weitere Möglichkeit, sehr große Archive auf externen Medien (z. B. Bandlaufwerken, Disketten) zu sichern, erhält man mit der Option `-M`. Ein Nachteil dieser Methode ist, dass die Daten nur mit tar direkt wiederhergestellt werden können und ein zusätzliches Packen mit den Optionen `-z`, `-Z` und `-j` nicht möglich ist. == Anlegen == {{{#!vorlage Warnung Es ist darauf zu achten, das richtige Gerät anzusprechen, da sonst Daten verloren gehen können! }}} Multi-Volume-Archiv anlegen: {{{#!vorlage Befehl sudo tar -cvMf /dev/GERÄT daten/ }}} Wenn ein Medium vollständig beschrieben ist, fragt tar so lange nach neuen Medien, bis alle Daten geschrieben sind. Dies sieht zum Beispiel so aus: {{{ Medium #2 für /dev/GERÄT und Eingabetaste drücken: }}} Wenn das Medium nicht in der Lage ist die Rückmeldung zu geben, wann es vollständig beschrieben ist, kann die Option `-L` helfen. Man kann auch ein Multi-Volume-Archiv anlegen und nach 10000 Kilobyte das Medium wechseln: {{{#!vorlage Befehl sudo tar -cvM -L 10000 -f /dev/GERÄT daten/ }}} Es ist wichtig, die genaue Speicherkapazität des Mediums anzugeben, da sonst beim Extrahieren eventuell Teile von alten Archiven extrahiert werden. == Extrahieren == * Multi-Volume-Archiv vollständig extrahieren: {{{#!vorlage Befehl sudo tar -pxvMf /dev/GERÄT }}} * Eine Datei aus einem Multi-Volume-Archiv extrahieren: {{{#!vorlage Befehl sudo tar -pxvMf /dev/GERÄT PFAD/DATEINAME }}} tar wird dann die folgenden Medien anfordern, bis die benötigte Datei gefunden ist. = Backup mit tar = Wie man ein Backup mittels Skript erzeugt, wird gesondert erklärt: [:Skripte/Backupscript:Backupskript]. Für regelmäßige Datensicherungen siehe auch [:Skripte/inkrementelles Backup:]. Mit tar können Daten auch per [:FTP:] gesichert werden. Um z.B. das lokale Verzeichnis '''/home/BENUTZER/''' als Datei '''user.tar''' zu sichern, am besten in einem Terminal in das lokale Verzeichnis '''/home''' wechseln. Dann eine FTP-Verbindung zu dem Server aufbauen, auf dem das Archiv gesichert werden soll und dort in das Zielverzeichnis wechseln. Folgender Befehl in der FTP-Shell stößt den Vorgang an: {{{#!vorlage Befehl ftp> put |"tar cf - BENUTZER" user.tar }}} Falls einzelne Dateien oder Verzeichnisse mangels Berechtigungen nicht gesichert werden können (z.B. '''BENUTZER/.viminfo'''), informiert tar darüber und setzt den Vorgang fort. Dabei werden diese Dateien natürlich ausgelassen. = Links = * [:Packprogramme:] - Übersichtsartikel zu Komprimierungs-Formaten und Archivierungs-Programmen * [wikipedia:tar_(Packprogramm):] - Wikipedia * [https://www.gnu.org/software/tar/manual/index.html Original GNU tar Anleitung] {en} * [https://www.plutospin.com/tarfixer.html tarfixer] {en} - Programm zum Reparieren von defekten '''tar'''-Archiven #tag: Shell, Packer, Komprimierung, Archivmanager, Datensicherung