Een tar.gz-bestand uitpakken
Als je open source software gebruikt, is de kans groot dat je op een gegeven moment een .tar-bestand zult tegenkomen. Het open source tar-archiefprogramma bestaat al sinds 1979 , dus het is echt alomtegenwoordig in de POSIX-wereld. Het doel is eenvoudig: het neemt een of meer bestanden en ‘verpakt’ ze in een op zichzelf staand bestand, een tape-archief genaamd, omdat het, toen tar werd uitgevonden, werd gebruikt om gegevens op opslagtapes.
Mensen die nieuw zijn met het tar-formaat, stellen het gewoonlijk gelijk aan een .zip-bestand, maar een tar-archief is met name niet gecomprimeerd. Het tar-formaat maakt alleen een container voor bestanden, maar de bestanden kunnen worden gecomprimeerd met afzonderlijke hulpprogramma’s. Veelvoorkomende compressies die worden toegepast op een .tar-bestand zijn Gzip, bzip2 en xz. Daarom zie je zelden alleen een .tar-bestand en kom je vaker .tar.gz- of .tgz-bestanden tegen.
Tar installeren
Op Linux, BSD, Illumos en zelfs Mac OS is het tar-commando al voor je geïnstalleerd.
Op Windows, de gemakkelijkste manier om met .tar-bestanden om te gaan is insta ll het LGPL open source 7-Zip-hulpprogramma. De naam impliceert dat het “een zip-hulpprogramma is, maar het werkt ook met tar-archieven, en biedt zelfs opdrachten voor de cmd-opdrachtregelinterface.
Als je echt een echt tar-hulpprogramma op Windows wilt, is GNU tar installeerbaar via WSL op Windows 10 of via Cygwin.
Een tarball maken
Een tar-archief wordt vaak een tarball genoemd, vermoedelijk omdat wij hackers graag woorden verkorten tot zo weinig lettergrepen mogelijk, en “tarball” is korter en gemakkelijker dan “tar archive”.
In een GUI is het maken van een tarball hoogstens een proces in drie stappen. Ik gebruik KDE, maar het proces is in wezen hetzelfde op Gnome of XFCE:
- Maak een map
- Plaats je bestanden in de map
- Klik met de rechtermuisknop op de map en selecteer “Comprimeren”
comprimeren.jpg
Een tarball maken
In een shell is het in wezen hetzelfde proces.
Om een gr een groep bestanden in één archief, plaats uw bestanden in een map en roep vervolgens tar aan, waarbij u een naam opgeeft voor het archief dat u wilt maken en de map die u wilt archiveren:
Het tar-hulpprogramma is uniek onder de commando’s, omdat het “geen streepjes vereist voor zijn korte opties, waardoor ervaren gebruikers complexe commando’s als volgt kunnen afkorten:
U hoeft geen bestanden in een directory te plaatsen voordat u ze archiveert, maar het wordt als een slechte etiquette beschouwd om dat niet te doen, omdat niemand wil dat 50 bestanden op hun bureaublad worden verspreid wanneer ze een directory uit het archief halen. Dit soort archieven wordt wel eens een tarbomb genoemd, hoewel niet altijd met een negatieve connotatie. Tarbombs zijn handig voor patches en software-installatieprogramma’s; het is gewoon een kwestie van weten wanneer je ze moet gebruiken en wanneer je ze moet vermijden.
Archieven comprimeren
Het maken van een tar-archief comprimeert je bestanden niet, het maakt ze alleen gemakkelijker bewegen als één blob. Voor compressie kun je tar call Gzip of bzip hebben:
$ tar --create --bzip2 --file foo.tar.bz2 myfiles
$ tar --create --gzip --file foo.tar.gz myfiles
Veelvoorkomende extensies zijn tar.gz en .tgz voor een gzipte tar bestand, en .tbz en .tar.bz2 voor een bzipped tar-bestand.
Archieven uitpakken
Als je een tarball van een vriend of een softwareproject hebt ontvangen, kun je het uitpakken het in uw GUI-bureaublad of in een shell. Klik in een GUI met de rechtermuisknop op het archief dat u wilt uitpakken en selecteer “Uitpakken”.
extract_0.jpg
Een archief extraheren
De Dolphin bestandsbeheerder biedt een functie om automatisch te detecteren of de bestanden die uit een archief zijn geëxtraheerd zich in een map bevinden of dat er een nieuwe map voor moet worden aangemaakt. Ik gebruik deze optie zodat wanneer ik bestanden uit een tarbomb extraheer, ze netjes en ingesloten blijven.
In een shell is het commando om een archief uit te pakken behoorlijk intuïtief:
Gevorderde gebruikers verkorten dit tot:
U kunt zelfs het tar-hulpprogramma gebruiken om .zip-bestanden uit te pakken:
Geavanceerde tar
De tar-hulpprogramma’s zijn zeer robuust en flexibel. Als je eenmaal vertrouwd bent met de basis, is het handig om andere functies te verkennen.
Voeg een bestand of map toe aan een bestaande tarball
Als je een bestaande tarball hebt en je wilt voeg er een nieuw bestand aan toe, je hoeft niet alles uit het archief te halen om een nieuw bestand toe te voegen.
De meeste Linux- en BSD-desktops worden geleverd met een grafisch archiefprogramma. Hiermee kun je een tar-archief openen Alsof het een andere directory is, neem een kijkje binnenin, pak individuele bestanden uit, voeg er bestanden aan toe en bekijk zelfs een voorbeeld van de tekstbestanden en afbeeldingen die het bevat.
ark.jpg
Het Ark-archiefprogramma
In de shell kun je een bestand of map toevoegen aan een tar-archief zolang het niet gecomprimeerd is. Als uw archief is gecomprimeerd, moet u het decomprimeren, maar u hoeft het niet uit het archief te halen.
Als een archief bijvoorbeeld is gecomprimeerd met Gzip:
$ gunzip archive.tar.gz
$ ls
archive.tar
Nu je een niet-gecomprimeerd tar-archief hebt, kun je er een bestand en een map aan toevoegen:
$ tar --append --file archive.tar foo.txt
$ tar --append --file archive.tar bar/
De kortere versie:
$ tar rf archive.tar foo.txt
$ tar rf archive.tar bar/
Bekijk een lijst met bestanden binnen een tarball
Om de bestanden in een archief te zien, gecomprimeerd of niet-gecomprimeerd, gebruik de – lijstoptie:
$ tar --list --file archive.tar.gz
myfiles/
myfiles/one
myfiles/two
myfiles/three
bar/
bar/four
foo.txt
Gevorderde gebruikers verkorten dit tot:
Pak er slechts één uit bestand of map
Soms heb je niet alle bestanden in een archief nodig, je wilt er gewoon een of twee uitpakken. Nadat je de inhoud van een tar-archief hebt opgesomd, gebruik je het gebruikelijke tar-extractiecommando samen met de pad van het bestand dat u wilt extraheren:
$ tar xvf archive.tar.gz bar/four
bar/four
Het extraheren van meerdere bestanden of mappen is in principe hetzelfde:
$ tar xvf archive.tar.gz myfiles/one bar/four
myfiles/one
bar/four
Je kunt zelfs jokertekens gebruiken:
$ tar xvf archive.tar.gz --wildcards "*.txt"
foo.txt
Pak een tarball uit naar een andere map
Eerder zei ik dat sommige tarballs tarbombs waren die vertrokken bestanden verspreid over uw computer. Als u een tar-archief opgeeft en ziet dat de bestanden ervan niet in een directory staan, kunt u er een bestemmingsdirectory voor maken:
$ tar --list --file archive.tar.gz
foo
bar
baz
$ mkdir newfiles
$ tar xvf archive.tar.gz -C newfiles
Dit plaatst alle de bestanden in het archief netjes in de “newfiles” -directory.
De bestemmingsdirectory-optie is voor veel meer nuttig dan alleen uitgepakte bestanden netjes houden, bijvoorbeeld het distribueren van bestanden die bedoeld zijn om naar een bestaande directory-structuur. Als u aan een website werkt en de beheerder wat nieuwe bestanden wilt sturen, kunt u dit op een paar verschillende manieren doen. De voor de hand liggende manier is om de bestanden naar de sitebeheerder te e-mailen, samen met wat tekst waarin wordt uitgelegd waar elk bestand moet zijn posted: “Het bijgevoegde index.php-bestand gaat naar /var/www/example.com/store, en het vouchers.php-bestand gaat naar /var/www/example.com/deals …”
De efficiëntere manier zou zijn om een tar-archief aan te maken:
Gegeven deze structuur zou de sitebeheerder je binnenkomende archief rechtstreeks naar de root-directory van de server kunnen extraheren. Het tar-hulpprogramma detecteert automatisch het bestaan van /var/www/example.com evenals de submappen, deals en afbeeldingen, en distribueert de bestanden naar de juiste mappen. Het is bulksgewijs kopiëren en plakken, snel en gemakkelijk gedaan.
GNU tar en BSD tar
Het tar-formaat is slechts een formaat, en het is een open formaat, dus het is kan door meer dan één tool worden gemaakt.
Er zijn twee algemene tar-hulpprogramma’s: het GNU tar-hulpprogramma, standaard geïnstalleerd op Linux-systemen, en het BSD-tar-hulpprogramma, standaard geïnstalleerd op BSD, Mac OS , en sommige Linux-systemen. Voor algemeen gebruik zijn beide teer voldoende. Alle voorbeelden in dit artikel werken bijvoorbeeld hetzelfde op GNU- of BSD-tar. De twee hulpprogramma’s hebben echter enkele kleine verschillen, dus als u eenmaal vertrouwd bent met het ene, moet u het andere proberen.
Waarschijnlijk moet u de ‘andere’ tar installeren (wat dat ook uw systeem) handmatig. Om verwarring tussen hulpprogramma’s te voorkomen, wordt GNU tar vaak gtar genoemd en wordt BSD tar bsdtar genoemd, waarbij het commando tar een symlink of een alias is naar degene die vooraf op uw computer was geïnstalleerd.