Tips en Trucs 2018

Aanmaken, comprimeren en uitpakken van TAR bestanden

Als Linux gebruiker krijg je vroeg of laat te maken met TAR bestanden. TAR archieven dateren van 1979 en zijn in POSIX systemen zoals Linux alomtegenwoordig. Ze worden vooral gebruikt om verschillende bestanden in één bestand te verzamelen (te groeperen). Deze bestanden noemde men vroeger tape archives, ze werden in die tijd namelijk bewaard op magnetische banden.

Tegenwoordig wordt het TAR formaat vergeleken met het ZIP formaat, maar een TAR bestand is niet altijd gecomprimeerd. Het TAR formaat is gewoon een container voor bestanden, waarbij ze door verschillende programma's kunnen worden gecomprimeerd. Veel voor TAR bestanden gebruikte compressieformaten zijn Gzip, bzip2 en xz. Je komt dus zelden TAR bestanden tegen, maar wel tar.gz of .tgz bestanden.

TAR installeren

Linux, BSD en zelf macOS hebben standaard tar aan boord. Voor Windows is de eenvoudigste manier om TAR bestanden te beheren, het open source programma 7-Zip.

Een tarball aanmaken

Een TAR archief wordt dikwijls een tarball genoemd.

In een grafische omgeving zoals KDE (en Gnome of XFCE) bestaat het aanmaken van een tarball uit drie stappen:

  1. Maak een map
  2. Plaats de bestanden in de nieuwe map
  3. Klik rechts op de nieuwe map en voer in het submenu Comprimeren de opdracht Hier (als TAR.GZ) uit.

TAR aanmaken

Met opdrachten in een terminal, gebruik je dezelfde methode. Groepeer uw bestanden in een aparte map en voer de volgende opdracht uit:

dany@pindabook:~> tar --create --verbose --file archief.tar Map\ met\ bestanden/
Map met bestanden/
Map met bestanden/raspian-noresize-old.sh
Map met bestanden/liteimage.img
Map met bestanden/raspian-resize.sh
Map met bestanden/img2sd.sh
Map met bestanden/raspian-hostname-resize.sh
Map met bestanden/Xbian Kodi.txt
Map met bestanden/raspian.sh
Map met bestanden/raspian-noresize.sh
Map met bestanden/Digitale week
Map met bestanden/raspian-truncate.sh
Map met bestanden/raspian-hostname.sh

De opdrachtregel bestaat uit de opdracht tar met de argumenten om een TAR bestand aan te maken (--create), vertel wat er gebeurt (--verbose), met de bestandsnaam archief.tar (--file archief.tar) en archiveer alle bestanden uit de map "Map met bestanden" (Map\ met\ bestanden/). Als er spaties in map of bestandsnamen voorkomen plaats je ze tussen aanhalingstekens of zoals in het voorbeeld laat je de spaties in de bestandsnaam voorafgaan door een backslash. Zo wordt de bestandsnaam als één geheel gezien en niet als meerdere verschillende bestandsnamen gescheiden door een spatie.

Je kunt de argumenten ook inkorten door enkel de eerste letter te gebruiken (zonder min-teken voor):

dany@pindabook:~> tar cvf archief.tar Map\ met\ bestanden/
Map met bestanden/
Map met bestanden/raspian-noresize-old.sh
Map met bestanden/liteimage.img
Map met bestanden/raspian-resize.sh
Map met bestanden/img2sd.sh
Map met bestanden/raspian-hostname-resize.sh
Map met bestanden/Xbian Kodi.txt
Map met bestanden/raspian.sh
Map met bestanden/raspian-noresize.sh
Map met bestanden/Digitale week
Map met bestanden/raspian-truncate.sh
Map met bestanden/raspian-hostname.sh

Archieven comprimeren

Bij een TAR archief zijn de bestanden niet gecomprimeerd, je groepeert ze in één bestand zodat je ze gemakkelijker kunt verplaatsen of kopiëren. Gecomprimeerde TAR achieven in het Gzip of bzip formaat maak je als volgt:

dany@pindabook:~> tar --create --bzip2 --file archief.tar.bz2 Map\ met\ bestanden/
dany@pindabook:~> tar --create --gzip --file archief.tar.gz Map\ met\ bestanden/

Veel gebruikte extensies voor met Gzip gecomprimeerde TAR archieven zijn tar.gz en .tgz, voor met bzip gecomprimeerde TAR archieven .tbz en .tar.bz2.

Archieven uitpakken

Om een ontvangen TAR archief uit te pakken, klik je er met de rechter muisknop op en voer je in het submenu Uitpakken de opdracht Archief hier uitpakken, submap automatisch detecteren uit.

TAR uitpakken

Daarbij gaat de Dolphin bestandsbeheerder onderzoeken of de bestanden in het archief in een map zitten. Indien dit niet zo is, maakt Dolphin eerst een map aan om de bestanden daarin uit te pakken. Zo wordt het archief steeds in een map uitgepakt.

In een terminal pak je een archief uit met de opdracht:

dany@pindabook:~> tar --extract --file archief.tar.gz

Of korter:

dany@pindabook:~> tar xf archief.tar.gz

Om een klassiek ZIP archief uit te pakken, gebruik je de opdracht:

dany@pindabook:~> tar --extract --file archief.zip

Gevorderd TAR gebruik

TAR is robuust en flexibel. Nu je de basis beet hebt, is het tijd om nog meer TAR mogelijkheden te verkennen.

Een bestand of map toevoegen aan een bestaand archief

Om aan een bestaand archief een bestand toe te voegen, moet je het archief niet eerst uitpakken.

De meeste Linux bureaubladomgevingen hebben een grafisch programma om archieven te beheren. Gebruik het om archieven te openen om de inhoud ervan te bekijken, individuele bestanden uit te pakken of toe te voegen en zelfs een voorvertoning van tekst- en afbeeldingsbestanden te bekijken.

Ark

In een terminal kan je een bestand of map enkel aan een niet gecomprimeerd TAR archief toevoegen. Een gecomprimeerd archief moet je dus eerst decomprimeren, zonder het uit te pakken.

Een met Gzip gecomprimeerd TAR archief decomprimeer je met:

dany@pindabook:~> gunzip archief.tar.gz 
gzip: archief.tar already exists; do you wish to overwrite (y or n)? y

Omdat we eerder al een niet gecomprimeerd archief hadden aangemaakt, wordt vriendelijk gevraagd om het bestaande niet gecomprimeerde archiefbestand te overschrijven. Merk ook op dat de naam van het archief veranderd van archief.tar.gz naar archief.tar.

Om nu een bestand of map aan het ongecomprimeerde TAR archief toe te voegen, gebruik je de opdrachten:

dany@pindabook:~> tar --append --file archief.tar tekst.txt
dany@pindabook:~> tar --append --file archief.tar map/

Of korter:

dany@pindabook:~> tar rf archief.tar tekst.txt
dany@pindabook:~> tar rf archief.tar map/

Je kunt het TAR archief dan achteraf terug comprimeren met de opdracht:

dany@pindabook:~> gzip archief.tar

De inhoud van een archief weergeven

Om de inhoud van een al dan niet gecomprimeerd TAR archief weer te geven, gebruik je de opdracht:

dany@pindabook:~> tar --list --file archief.tar.gz 
Map met bestanden/
Map met bestanden/raspian-noresize-old.sh
Map met bestanden/liteimage.img
Map met bestanden/raspian-resize.sh
Map met bestanden/img2sd.sh
Map met bestanden/raspian-hostname-resize.sh
Map met bestanden/Xbian Kodi.txt
Map met bestanden/raspian.sh
Map met bestanden/raspian-noresize.sh
Map met bestanden/Digitale week
Map met bestanden/raspian-truncate.sh
Map met bestanden/raspian-hostname.sh
tekst.txt
map/
map/tekst2.txt
map/tekst.txt

Of korter:

dany@pindabook:~> tar tf archief.tar.gz 
Map met bestanden/
Map met bestanden/raspian-noresize-old.sh
Map met bestanden/liteimage.img
Map met bestanden/raspian-resize.sh
Map met bestanden/img2sd.sh
Map met bestanden/raspian-hostname-resize.sh
Map met bestanden/Xbian Kodi.txt
Map met bestanden/raspian.sh
Map met bestanden/raspian-noresize.sh
Map met bestanden/Digitale week
Map met bestanden/raspian-truncate.sh
Map met bestanden/raspian-hostname.sh
tekst.txt
map/
map/tekst2.txt
map/tekst.txt

Eén map of bestand uit een archief uitpakken

Soms heb je niet alle bestanden uit een archief nodig. Je kunt dan ook enkel degene uitpakken die je nodig hebt.

dany@pindabook:~> tar xvf archief.tar.gz Map\ met\ bestanden/Xbian\ Kodi.txt 
Map met bestanden/Xbian Kodi.txt

Hiermee pak je het bestand "Xbian Kodi.txt" uit naar de map "Map met bestanden". Indien de map "Map met bestanden" niet bestaat, wordt deze aangemaakt. Bestaat de map wel dan wordt het bestand in de bestaande map geplaatst. Let opnieuw op de backslash voor elke spatie in een map- of bestandsnaam.

Om meerdere bestanden tegelijk uit te pakken, som je ze gewoon op:

dany@pindabook:~> tar xvf archief.tar.gz Map\ met\ bestanden/Xbian\ Kodi.txt Map\ met\ bestanden/raspian-hostname-resize.sh
Map met bestanden/raspian-hostname-resize.sh
Map met bestanden/Xbian Kodi.txt

Je kunt zelfs gebruik maken van jokers:

dany@pindabook:~> tar xvf archief.tar.gz --wildcards '*.sh'
Map met bestanden/raspian-noresize-old.sh
Map met bestanden/raspian-resize.sh
Map met bestanden/img2sd.sh
Map met bestanden/raspian-hostname-resize.sh
Map met bestanden/raspian.sh
Map met bestanden/raspian-noresize.sh
Map met bestanden/raspian-truncate.sh
Map met bestanden/raspian-hostname.sh

Een archief naar een andere map uitpakken

Om te vermijden dat archiefbestanden zonder hoofdmap er bij het uitpakken een zootje van maakt, maak je op voorhand best een map aan waarin je de archiefbestanden afgezonderd kunt uitpakken:

dany@pindabook:~> mkdir Archiefbestanden
dany@pindabook:~> tar xvf archief.tar.gz -C Archiefbestanden/
Map met bestanden/
Map met bestanden/raspian-noresize-old.sh
Map met bestanden/liteimage.img
Map met bestanden/raspian-resize.sh
Map met bestanden/img2sd.sh
Map met bestanden/raspian-hostname-resize.sh
Map met bestanden/Xbian Kodi.txt
Map met bestanden/raspian.sh
Map met bestanden/raspian-noresize.sh
Map met bestanden/Digitale week
Map met bestanden/raspian-truncate.sh
Map met bestanden/raspian-hostname.sh
tekst.txt
map/
map/tekst2.txt
map/tekst.txt

Dit plaatst alle uitgepakte bestanden en mappen netjes in de map Archiefbestanden.

Dit is niet alleen handig om uitgepakte bestanden en mappen af te zonderen, maar ook bij het verdelen van archiefbestanden die in een bestaande mappenstructuur moeten worden uitgepakt. Denk aan webpagina bestanden die op een webserver in een bepaalde map terecht moeten komen. Of aan bestanden die deel uitmaken van een systeem (bijvoorbeeld bij het terugzetten van een reservekopie of back-up).