Linux Essentials / Macht der Kommandozeile

Archivieren von Dateien

Michael Gisbers & Kai Schell

2021-04-09

Einleitung

Auf den folgenden Slides sind die im Vortrag verwendeten Kommandozeilen-Aufrufe hinterlegt.

Einfaches Archiv erstellen

Ein Archiv kann auch ohne die Ausgabe in eine Datei erstellt werden. Es wird dann auf die Kommandozeile ausgegeben.

Aktuelle Versionen des tar-Befehls verweigern dies. Daher wird in diesem Beispiel die Ausgabe durch den Befehl cat geschickt.

Einfaches Archiv erstellen

user@linux $ tar c /etc/hostname | cat
user@linux $ tar cv /etc/hostname | cat

Der zusätzliche Parameter v erzeugt in der Ausgabe zusätzlich die Angabe der im Archiv hinterlegten Dateien.

Komprimierte Archive erstellen

Die folgenden Parameter erzeugen komprimierte Archive. Die richtige Namensendung für das Archiv muss der Anwender selber festlegen:

  • z - gzip, Endung .tar.gz oder .tgz
  • j - bzip2, Endung .tar.bz2
  • J - xz, Endung .tar.xz

Komprimierte Archive erstellen

Beispiele:

user@linux $ tar cvzf /tmp/archiv.tar.gz /etc/hostname
user@linux $ tar cvjf /tmp/archiv.tar.bz2 /etc/hostname
user@linux $ tar cvJf /tmp/archiv.tar.xz /etc/hostname

Unterschiedliche Syntax Varianten

Die Aufruf Syntax für die Hauptbefehle kann frei gewählt werden. Entweder nach BSD oder GNU - Parser Vorgaben:

user@linux $ tar cvf /tmp/archiv.tar /etc/hostname
user@linux $ tar -cvf /tmp/archiv.tar /etc/hostname

Wenn die Variante mit dem - gewählt wird ist die Position des f nicht mehr frei wählbar. Es muss direkt dahinter der Dateiname des Archivs folgen-

Inhalt eines Archivs auflisten

user@linux $ tar tf /tmp/archiv.tar
user@linux $ tar tvf /tmp/archiv.tar

Bei dem Aufruf mit der Option v entspricht der Befehl einem ls -l auf ein Verzeichnis, sonst eher einem einfachen ls.

Ein Archiv komplett entpacken

Das Archiv wird in das aktuelle Verzeichnis entpackt. Soll ein anderes Verzeichnis genutzt werden, ist dieses mit -C oder --directory explizit anzugeben. Das Zielverzeichnis muss dafür existieren.

user@linux $ tar xvzf /tmp/archiv.tar.gz
user@linux $ tar xvzf /tmp/archiv.tar.gz -C /tmp/entpacken

Einzelne Dateien aus dem Archiv entpacken

Die zu entpackenden Dateien werden angegeben. Dabei müssen die Dateinamen so angegeben werden, wie sie im Archiv vorliegen. Z. B. ohne führenden /-

user@linux $ tar xvzf /tmp/archiv.tar.gz etc/hostname

Dateien nach Pattern entpacken

Das Pattern - Matching (Wildcard/Globbing) muss explizit mit dem Parameter --wildcards aktiviert werden.

user@linux $ tar xvzf /tmp/archiv.tar.gz --wildcards etc/host*

Beispiel für die Sicherung des Home-Verzeichnisses

user@linux $ tar xvzf /tmp/backup_home_${USER}_$(date +"%s").tar.gz ${HOME}

Kleine Erklärung für die verwendeten Ersetzungen

  • ${USER} - aktueller Username
  • ${HOME} - aktuelles Home-Verzeichnis
  • $(date +“%s”) - aktuelles Datum als Unix - Timestamp ausgeben