tar >rsync >git >

Mit tar Ordner oder Dateien archivieren und ggf. komprimieren.

Allgemeines:

  • Die Option " f " wird immer am Ende einer Optionskette benötigt und wird daher auch nicht mehr erwähnt.
  • tar eignet sich gut um Ordner mit vielen Dateien von A nach B zu kopieren.

Test Ordner samt Inhalt mit Testdatei erstellen.

mkdir test_ordner
touch test_ordner/test_datei.txt

Mit tar einen Ordner archivieren

  • Option "c"
~ # tar -cf test_ordner.tar test_ordner/

# Inhalt auflisten
~ # ll
...
drwxr-xr-x  2 root root 4,0K 21. Sep 17:25 test_ordner
-rw-r--r--  1 root root  10K 21. Sep 17:40 test_ordner.tar

# Archiv "test_ordner.tar" wurde erstellt

Mit tar nur den Inhalt eines Ordners archivieren

  • Unter Punkt "Inhalt eines Archivs anzeigen" ist zu sehen dass sich die Struktur im Archiv geändert hat.
cd test_ordner/

tar -cf /root/test_ordner.tar .

ll /root/
...
drwxr-xr-x  2 root root 4,0K 21. Sep 19:07 test_ordner
-rw-r--r--  1 root root  10K 21. Sep 19:08 test_ordner.tar

# Ohne Pfad-Angabe für das Archiv kommt folgende Meldung. Funktioniert, aber nicht so praktisch.

tar -cf test_ordner.tar .
tar: ./test_ordner.tar ist das Archiv; nicht gesichert.

# Wir befinden uns immer noch im Ordner /root/test_ordner
mkdir unterordner
touch unterordner/test_datei.txt

# Inhalt auflisten
ll
-rw-r--r-- 1 root root    0 21. Sep 17:25 test_datei.txt
drwxr-xr-x 2 root root 4,0K 21. Sep 19:19 unterordner

ll unterordner/
insgesamt 0
-rw-r--r-- 1 root root 0 21. Sep 19:19 test_datei.txt

# Archiv um neue Dateien und Ordner erweitern
tar -cf /root/test_ordner.tar .

# Inhalt des Archivs anzeigen
root@svr13: ~/test_ordner # tar -tf /root/test_ordner.tar
./
./test_datei.txt
./unterordner/
./unterordner/test_datei.txt

# Datei oder Ordner aus einem Archiv entfernen

touch unterordner/1_test_datei.txt 

tar -cf /root/test_ordner.tar .

tar -tf /root/test_ordner.tar
./
./test_datei.txt
./unterordner/
./unterordner/test_datei.txt
./unterordner/1_test_datei.txt

rm unterordner/1_test_datei.txt 

tar -cf /root/test_ordner.tar .

tar -tf /root/test_ordner.tar
./
./test_datei.txt
./unterordner/
./unterordner/test_datei.txt

Mit tar ein Verzeichnis archivieren und mit gzip komprimieren

  • Wir übergeben hier zusätzlich die Option "z". womit tar gzip zum komprimieren benutzt.
~ # tar -czf test_ordner.tar.gz test_ordner/

# Inhalt auflisten
~ # ll
...
drwxr-xr-x  2 root root 4,0K 21. Sep 17:25 test_ordner
-rw-r--r--  1 root root  10K 21. Sep 17:40 test_ordner.tar
-rw-r--r--  1 root root  153 21. Sep 17:42 test_ordner.tar.gz

# Komprimiertes Archiv "test_ordner.tar.gz" wurde erstellt

Mit tar ein Verzeichnis archivieren und mit pigz komprimieren

  • pigz ist besser für große Archive mit vielen Dateien, weil pigz mehrere Threads benutzt.
  • Mit der Option "p" kann man die Anzahl der Threads bestimmen.
  • Hier entfällt die Option "z", weil wir an pigz pipen.
# Wir befinden uns im Ordner /root/test_ordner

tar -cf - . | pigz > /root/test_ordner.tar.gz

tar -tf /root/test_ordner.tar.gz
./
./test_datei.txt
./unterordner/
./unterordner/test_datei.txt

Mit tar den Inhalt eines Archivs anzeigen

  • Option "t" optional mit Option "v"
tar -tvf test_ordner.tar
drwxr-xr-x root/root         0 2024-09-21 17:25 test_ordner/
-rw-r--r-- root/root         0 2024-09-21 17:25 test_ordner/test_datei.txt

tar -tvf test_ordner.tar.gz 
drwxr-xr-x root/root         0 2024-09-21 17:25 test_ordner/
-rw-r--r-- root/root         0 2024-09-21 17:25 test_ordner/test_datei.txt

# Ohne Details

tar -tf test_ordner.tar
test_ordner/
test_ordner/test_datei.txt

tar -tf test_ordner.tar.gz 
test_ordner/
test_ordner/test_datei.txt

# Wenn nur die Dateien in einem Ordner archiviert wurden, sieht der Inhalt wie folgt aus.

tar -tvf /root/test_ordner.tar
drwxr-xr-x root/root         0 2024-09-21 19:07 ./
-rw-r--r-- root/root         0 2024-09-21 17:25 ./test_datei.txt

Um das Auspacken besser zu zeigen wird der archivierte Ordner entfernt.

rm -rf test_ordner

Mit tar ein Archiv auspacken

  • Option "x"
~ # tar -xf test_ordner.tar
# Inhalt auflisten
~ # ll
...
drwxr-xr-x  2 root root 4,0K 21. Sep 17:25 test_ordner
-rw-r--r--  1 root root  10K 21. Sep 17:40 test_ordner.tar
-rw-r--r--  1 root root  153 21. Sep 17:42 test_ordner.tar.gz

# Der Ordner "test_ordner" ist wieder vorhanden
# Wir löschen ihn wieder um das folgende Kommando zu testen
~ # rm -rf test_ordner

Mit tar ein gzip komprimiertes Archiv auspacken

  • Wir übergeben hier zusätzlich die Option "z". weil es sich um ein mit gzip komprimiertes tar handelt.
~ # tar -xzf test_ordner.tar.gz
~ # ll
...
drwxr-xr-x  2 root root 4,0K 21. Sep 17:25 test_ordner
-rw-r--r--  1 root root  10K 21. Sep 17:40 test_ordner.tar
-rw-r--r--  1 root root  153 21. Sep 17:42 test_ordner.tar.gz

# Der Ordner "test_ordner" ist wieder vorhanden

Mit tar ein Archiv auspacken und dabei das Vorhandensein existierender Dateien oder Ordner prüfen

  • hierzu verwenden wir die Option "k"
~ # tar -xzkf test_ordner.tar.gz
tar: test_ordner/test_datei.txt: Funktion open fehlgeschlagen: Die Datei existiert bereits
tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler

# das gleiche ohne gzip

~ # tar -xkf test_ordner.tar
tar: test_ordner/test_datei.txt: Funktion open fehlgeschlagen: Die Datei existiert bereits
tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler

Mit tar ein Archiv auspacken und einen anderen Zielordner bestimmen.

~ # mkdir neuer_ordner
~ # tar -xf test_ordner.tar -C neuer_ordner

~ # ls -l neuer_ordner/
insgesamt 4,0K
drwxr-xr-x 2 root root 4,0K 21. Sep 17:25 test_ordner

~ # ls -l neuer_ordner/test_ordner/
insgesamt 0
-rw-r--r-- 1 root root 0 21. Sep 17:25 test_datei.txt