Tar: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
+
===Was ist das?===
 
Mit tar ist es möglich, mehrere Dateien oder ganze Verzeichnisse in einem Archiv
 
Mit tar ist es möglich, mehrere Dateien oder ganze Verzeichnisse in einem Archiv
 
abzulegen bzw. diese wieder aus einem Archiv zu extrahieren.
 
abzulegen bzw. diese wieder aus einem Archiv zu extrahieren.
Zeile 12: Zeile 12:
 
===Optionen===
 
===Optionen===
 
* -v : ausführliche Ausgabe
 
* -v : ausführliche Ausgabe
* -f dat1 verwendet dat1 als Archiv  
+
* -f dat1 : verwendet dat1 als Archiv
* -z komprimiert im gzip Verfahren (Dateiformat .tar.gz)
+
* -z : komprimiert im gzip Verfahren (Dateiformat .tar.gz)
* -j komprimiert im bzip2 Verfahren (Dateiformat .bz2)
+
* -j : komprimiert im bzip2 Verfahren (Dateiformat .bz2)
* -C ver1/ wechselt vor der Ausführung nach ver1/
+
* -J : komprimiert im xz Verfahren (Dateiformat .xz)
* -J komprimiert im xzip Verfahren (Dateiformat .xz
+
* -C ver1/ : wechselt vor der Ausführung nach ver1/
 
+
* -I prog : verwendet externes Programm (z. B. unzstd) zur (De-)Kompression
'''Anmerkung:'''
 
  
 +
'''Anmerkung:'''
 
Für gewöhnlich können Optionen von Linuxbefehlen in einer beliebigen Reihenfolge angegeben werden. Jedoch erwartet
 
Für gewöhnlich können Optionen von Linuxbefehlen in einer beliebigen Reihenfolge angegeben werden. Jedoch erwartet
die Option -f direkt den Dateinamen und sollte daher als letzte Option oder getrennt stehen.  
+
die Option -f direkt den Dateinamen und sollte daher als letzte Option oder getrennt stehen.
  
Beispiele
+
===Beispiele===
 +
Erstellen eines Tar-Gzip-Archivs mit den Dateien in /etc
 +
*tar -czf /tmp/zero_etc_dateien.tar.gz
  
Erstellen eines Tar-Gzip-Archivs mit den Dateien in /etc
 
root@zero:/etc# tar -czf /tmp/zero_etc_dateien.tar.gz *
 
 
Anzeigen der Dateien im Archiv zero_etc_dateien.tar.gz
 
Anzeigen der Dateien im Archiv zero_etc_dateien.tar.gz
root@zero:~# tar -tf /tmp/zero_etc_dateien.tar.gz
+
*tar -tf /tmp/zero_etc_dateien.tar.gz
 
oder:
 
oder:
root@zero:~# tar -t -f /tmp/zero_etc_dateien.tar.gz
+
*tar -t -f /tmp/zero_etc_dateien.tar.gz
 +
 
 
Erstellen eines Bzip2-Archivs mit ausgewählten Dateien (telefonbuch, name)
 
Erstellen eines Bzip2-Archivs mit ausgewählten Dateien (telefonbuch, name)
root@zero:~# tar -cjf kontakte.bz2 telefonbuch name
+
*tar -cjf kontakte.bz2 telefonbuch name
 +
 
 
Ausführliches Entpacken eines Bzip2-Archivs in das aktuelle Verzeichnis
 
Ausführliches Entpacken eines Bzip2-Archivs in das aktuelle Verzeichnis
root@zero:~# tar -xvjf kontakte.bz2
+
*tar -xvjf kontakte.bz2
 
  telefonbuch
 
  telefonbuch
 
  name
 
  name
 +
 
Entpacken einer Datei aus einem Bzip2-Archiv in das aktuelle Verzeichnis
 
Entpacken einer Datei aus einem Bzip2-Archiv in das aktuelle Verzeichnis
root@zero:~# tar -xjvf kontakte.bz2 telefonbuch
+
*tar -xjvf kontakte.bz2 telefonbuch
 
  telefonbuch
 
  telefonbuch
 +
 
Entpacken eines Bzip2-Archivs in das Verzeichnis /tmp
 
Entpacken eines Bzip2-Archivs in das Verzeichnis /tmp
root@zero:~# tar -xjf kontakte.bz2 -C /tmp/
+
*tar -xjf kontakte.bz2 -C /tmp/
==Spezielles==
+
 
 +
===Spezielles===
 
tar schreibt auf STDOUT und liest über die PIPE von STDIN
 
tar schreibt auf STDOUT und liest über die PIPE von STDIN
*tar -C /bin -z -c -f - . | tar -C /tmp -x -v -z -f
+
*tar -C /bin -z -c -f - . | tar -C /tmp -x -v -z -f -
 +
 
 +
tar schreibt auf STDOUT über nc zu Rechner chris
 +
*tar -C /bin -z -c -f - . | nc chris 666
  
tar schreibt auf STDOUT über nc zu Rechner chris
 
*tar -C /bin  -z -c  -f - . | nc chris 666
 
 
tar liest von nc Port 666 über die PIPE von STDIN
 
tar liest von nc Port 666 über die PIPE von STDIN
*nc -l -p 666 | tar -C /tmp -x -v -z -f -
+
*nc -l -p 666 | tar -C /tmp -x -v -z -f -
  
==Vom Tararchive zum Binary==
+
===Vom Tararchive zum Binary===
 
Am Beispiel von Squid
 
Am Beispiel von Squid
 
*Squid Sourcecode besorgen
 
*Squid Sourcecode besorgen
root@zero:/usr/src# cp /share/squid-2.7.STABLE1.tar.gz .
+
*cp /share/squid-2.7.STABLE1.tar.gz .
 
*Paket entpacken
 
*Paket entpacken
root@zero:/usr/src# tar -xvzf squid-2.7.STABLE1.tar.gz .
+
*tar -xvzf squid-2.7.STABLE1.tar.gz
 
  .....
 
  .....
*In das Squid Verzeichnis wechseln
+
 
root@lydia:/usr/src/squid-2.7.STABLE1#
+
===zstd===
*Configure starten zu testen ob alles benötigte installiert ist und um eine Makefile zu erstellen
+
Erstellen eines zstd-komprimierten Archivs
root@lydia:/usr/src/squid-2.7.STABLE1# ./configure
+
*tar -cf - /usr/share | zstd > share.tar.zst
*Kompilieren des Paketes
+
 
root@lydia:/usr/src/squid-2.7.STABLE1# make
+
Entpacken eines zstd-Archivs (zweistufig)
*Installieren des Paketes
+
*unzstd share.tar.zst
root@lydia:/usr/src/squid-2.7.STABLE1# make install
+
*tar -xvf share.tar
 +
 
 +
Direkt entpacken mit tar
 +
*tar --use-compress-program=unzstd -xvf share.tar.zst
 +
oder
 +
*tar -I unzstd -xvf share.tar.zst

Aktuelle Version vom 10. Juli 2025, 05:46 Uhr

Was ist das?

Mit tar ist es möglich, mehrere Dateien oder ganze Verzeichnisse in einem Archiv abzulegen bzw. diese wieder aus einem Archiv zu extrahieren.

tar [Kommando][Optionen] Datei(en)

Kommandos

  • -c : Erzeugen eines neuen Archives
  • -t : Anzeigen des Inhalts eines Archives
  • -x : Extrahieren aus einem Archiv

Optionen

  • -v : ausführliche Ausgabe
  • -f dat1 : verwendet dat1 als Archiv
  • -z : komprimiert im gzip Verfahren (Dateiformat .tar.gz)
  • -j : komprimiert im bzip2 Verfahren (Dateiformat .bz2)
  • -J : komprimiert im xz Verfahren (Dateiformat .xz)
  • -C ver1/ : wechselt vor der Ausführung nach ver1/
  • -I prog : verwendet externes Programm (z. B. unzstd) zur (De-)Kompression

Anmerkung: Für gewöhnlich können Optionen von Linuxbefehlen in einer beliebigen Reihenfolge angegeben werden. Jedoch erwartet die Option -f direkt den Dateinamen und sollte daher als letzte Option oder getrennt stehen.

Beispiele

Erstellen eines Tar-Gzip-Archivs mit den Dateien in /etc

  • tar -czf /tmp/zero_etc_dateien.tar.gz

Anzeigen der Dateien im Archiv zero_etc_dateien.tar.gz

  • tar -tf /tmp/zero_etc_dateien.tar.gz

oder:

  • tar -t -f /tmp/zero_etc_dateien.tar.gz

Erstellen eines Bzip2-Archivs mit ausgewählten Dateien (telefonbuch, name)

  • tar -cjf kontakte.bz2 telefonbuch name

Ausführliches Entpacken eines Bzip2-Archivs in das aktuelle Verzeichnis

  • tar -xvjf kontakte.bz2
telefonbuch
name

Entpacken einer Datei aus einem Bzip2-Archiv in das aktuelle Verzeichnis

  • tar -xjvf kontakte.bz2 telefonbuch
telefonbuch

Entpacken eines Bzip2-Archivs in das Verzeichnis /tmp

  • tar -xjf kontakte.bz2 -C /tmp/

Spezielles

tar schreibt auf STDOUT und liest über die PIPE von STDIN

  • tar -C /bin -z -c -f - . | tar -C /tmp -x -v -z -f -

tar schreibt auf STDOUT über nc zu Rechner chris

  • tar -C /bin -z -c -f - . | nc chris 666

tar liest von nc Port 666 über die PIPE von STDIN

  • nc -l -p 666 | tar -C /tmp -x -v -z -f -

Vom Tararchive zum Binary

Am Beispiel von Squid

  • Squid Sourcecode besorgen
  • cp /share/squid-2.7.STABLE1.tar.gz .
  • Paket entpacken
  • tar -xvzf squid-2.7.STABLE1.tar.gz
.....

zstd

Erstellen eines zstd-komprimierten Archivs

  • tar -cf - /usr/share | zstd > share.tar.zst

Entpacken eines zstd-Archivs (zweistufig)

  • unzstd share.tar.zst
  • tar -xvf share.tar

Direkt entpacken mit tar

  • tar --use-compress-program=unzstd -xvf share.tar.zst

oder

  • tar -I unzstd -xvf share.tar.zst