8.3 Tömörítés és archívumkezelés
A számítástechnikában az adatok felhalmozódása elkerülhetetlen. Legyen szó a személyes dokumentumaidról, a játékmentéseidről, a helyi mesterséges intelligencia modellek konfigurációiról vagy egy teljes webáruház adatbázisáról, hamar eljön a pillanat, amikor az adatokat rendszerezni, költöztetni vagy biztonságos helyre kell menteni. Ekkor lép be a képbe az archívumkezelés és a tömörítés.
Windows környezetben megszokhattad, hogy az olyan grafikus programok, mint a WinRAR vagy a 7-Zip, egyetlen lépésben elintéznek mindent: kijelölöd a mappát, rákattintasz, és kapsz egy .zip vagy .rar fájlt. A Linux világában azonban a háttérben egy sokkal tisztább, moduláris filozófia uralkodik, amely különválasztja a fájlok egybecsomagolását (archiválás) a fájlok méretének csökkentésétől (tömörítés).
Ebben az alfejezetben megértjük ezt a klasszikus parancssori logikát, elsajátítjuk a legfontosabb eszközök (tar, gzip, zip, unzip) használatát, végül pedig megírjuk az első saját, teljesen automatizált biztonsági mentési szkriptünket.
8.3.1 A Linux filozófia: archiválás vs. tömörítés
Mielőtt billentyűzetet ragadnál, fontos tisztázni a két alapfogalom közötti különbséget, mert a Linux parancsok nevei és kapcsolói közvetlenül ebből fakadnak.
- Archiválás: Ez az a folyamat, amikor több száz különálló fájlt és mappát – megtartva azok belső szerkezetét, könyvtárfájait, sőt, a linuxos tulajdonosi és hozzáférési jogosultságait is – egyetlen közös nagy fájlba fűzünk össze. Ez a lépés önmagában nem csökkenti az fájlok méretét, ám sok ezernyi apró fájlt mindig érdemes inkább egy fájlba összecsomagolni. Olyan ez, mintha sok kis könyvet belepakolnál egyetlen nagy kartondobozba. A Linux natív archiváló eszköze a
tar. - Tömörítés (Compression): Ez az a folyamat, amikor egy matematikai algoritmus segítségével (amely megkeresi a szöveges vagy bináris ismétlődéseket) átalakítjuk a fájl tartalmát, hogy az kevesebb helyet foglaljon a merevlemezen. A Linux klasszikus tömörítő eszközei (mint a
gzipvagy azxz) egyszerre csak egyetlen egyedi fájlon képesek dolgozni. Nem tudnak mappákat kezelni.
Ez a két lépés kombinálható: a tar paranccsal összefogunk ezer fájlt egyetlen nagy „dobozba”, majd ezt a dobozt átadjuk a gzip programnak, ami összepréseli azt. Az eredmény egy úgynevezett szalagarchívum lesz, amelynek a kiterjesztése .tar.gz (vagy röviden .tgz).
8.3.2 A tar parancs
A tar elnevezés a történelmi Tape Archive (szalagarchívum) kifejezésből származik, ugyanis a hőskorban ezzel a paranccsal mentették az adatokat fizikai mágnesszalagokra. Bár a mágnesszalagokat ma már felváltották az NVMe SSD-k, a tar parancs pozíciója megingathatatlan maradt.
A tar használatához meg kell tanulnod néhány alapvető kapcsolót. Jó hír, hogy ezeket nem kell egyenként megjegyezned: a Linuxosok fix betűszavakat használnak a napi munka során.
1. Archívum létrehozása tömörítés nélkül (.tar)
Ha csak össze szeretnél fogni egy mappát egyetlen fájlba, a kapcsolók kombinációja a -cvf lesz.
c= Create (Létrehozás)v= Verbose (Részletes lista a képernyőre a folyamatban lévő fájlokról)f= File (Meghatározza, hogy a parancs után közvetlenül az elkészítendő archívum fájlneve következik)
tar -cvf archivum_neve.tar menteni_kivant_mappa/
Példa:
tar -cvf konyvek.tar /var/home/kjanos/Dokumentumok/Konyvek/
2. Tömörített archívum létrehozása
A modern tar képes arra, hogy a háttérben automatikusan meghívja a tömörítő algoritmusokat, így neked nem kell két külön parancsot kiadnod. Ehhez csak egyetlen extra betűt kell beszúrnod a kapcsolók közé:
z(GZIP algoritmus): Gyors, kicsi a processzorigénye, cserébe közepes tömörítési arányt biztosít. Kiterjesztése:.tar.gz
tar -czvf mentes.tar.gz ~/Dokumentumok/
J(XZ algoritmus): Rendkívül modern, brutális hatékonysággal préseli össze az adatokat (akár fele akkora fájlt eredményezhet, mint a gzip), cserébe sokkal lassabb és komoly CPU-erőforrást igényel a csomagolás. Kiterjesztése:.tar.xz
tar -cJvf AI_modellek.tar.xz ~/LM_Studio/config/
| Tömörítési típus | Kapcsoló | Kiterjesztés | Sebesség | Hatékonyság (Méretcsökkentés) |
|---|---|---|---|---|
| Sima tar | -cvf |
.tar |
Ultra-gyors (csak másol) | Nincs (0%) |
| Gzip | -czvf |
.tar.gz |
Gyors | Jó |
| Xz | -cJvf |
.tar.xz |
Lassú | Kiváló (Maximális) |
3. Archívumok kibontása (Kicsomagolás)
Ha letöltöttél egy .tar.gz vagy .tar.xz csomagot az internetről, vagy vissza szeretnél állítani egy korábbi mentést, az eddig használt c (create) kapcsolót egyszerűen le kell cserélned az x (Extract - Kibontás) kapcsolóra. A tömörítés típusát a modern tar automatikusan felismeri, így nem kötelező megadnod a z vagy J betűket!
Kicsomagolás az aktuális mappába, amiben állsz:
tar -xvf mentes.tar.gz
Kicsomagolás egy specifikus, másik mappába (a -C kapcsoló használatával):
tar -xvf mentes.tar.gz -C /var/home/kjanos/Letöltések/visszaallitott/
8.3.3 Zip és Unzip: A platformfüggetlen formátum
Bár a tar.gz a Linux natív és tökéletes eszköze, van egy óriási hátulütője: a Windows operációs rendszert használó ismerőseid, kollégáid vagy ügyfeleid alapesetben nem tudják mit kell kezdeni egy .tar.xz fájllal, ha elküldöd nekik e-mailben. Ha olyan adatcsomagot készítesz, amelyet Windows vagy macOS rendszerekkel is meg akarsz osztani, a klasszikus ZIP formátumot kell használnod.
A zip és unzip parancsok nem részei a tar ökoszisztémának; ezek különálló kis célszoftverek.
Fájlok és mappák tömörítése zip-be
A legfontosabb szabály mappák esetén a -r (rekurzív) kapcsolót kell használni. Ha ezt elfelejted, a zip parancs csak egy üres mappa-héjat hoz létre, a benne lévő fájlokat nem csomagolja be!
zip -r elkeszult_fajl.zip forras_mappa/
Példa:
zip -r kepek_kuldesre.zip ~/Képek/Nyaralas_2026/
Zip fájlok kicsomagolása
A kicsomagolás pofonegyszerű az unzip paranccsal:
unzip kepek_kuldesre.zip
Ha nem az aktuális helyre, hanem egy konkrét mappába szeretnéd kényszeríteni a kicsomagolást, használd a -d (Directory) kapcsolót:
unzip kepek_kuldesre.zip -d ~/Dokumentumok/MegosztottKepek/
8.3.4 Gyakorlati alkalmazás: Manuális biztonsági mentések okosan
Mielőtt az automatizációra rátérnénk, nézzük meg, hogyan tudsz kézzel egy professzionális mentést készíteni. A legnagyobb hiba, amit elkövethetsz, ha fixen mindig ugyanazt a nevet adod a mentésednek (pl. mentes.tar.gz), mert így minden újabb futtatás felülírja a régit, és ha tegnap töröltél ki egy fontos fájlt, az mára végleg eltűnik a mentésből is.
A megoldás a időbélyegek (timestamps) használata a fájlnévben. A Linux date parancsa képes lekérni az aktuális időt tetszőleges formátumban. Próbáld ki ezt a parancsot a terminálodban:
date +%Y%m%d # Kimenet: 20260628 (Év-Hónap-Nap bontásban)
Ezt a logikát beágyazhatjuk magába a tar parancsba a parancshelyettesítés ($()) segítségével:
tar -czvf config_backup_$(date +%Y%m%d).tar.gz ~/.config/
A parancs lefutása után egy tökéletesen azonosítható, egyedi fájlt kapsz (például: config_backup_20260628.tar.gz). Így naponta futtathatsz mentéseket, precízen látni fogod az idővonalat, és bármikor visszaléphetsz egy tetszőleges múltbéli nap állapotára.
8.3.5 Automatikus mentési szkriptek írása
Elérkeztünk a fejezet legizgalmasabb pontjához. Miért gépelnénk be ezeket a parancsokat minden áldott nap manuálisan, ha megkérhetjük a számítógépet, hogy végezze el helyettünk a háttérben? Írni fogunk egy professzionális Bash szkriptet (egy mini programot), ami összegyűjti a megadott mappáinkat, tömörített mentést készít belőlük egy dedikált mentési könyvtárba, és automatikusan takarít maga után, hogy a merevlemezünk ne teljen be a végtelenségig.
1. A szkriptfájl létrehozása
Hozzuk létre a szkriptet a korábban megismert modern micro (vagy nano) szerkesztővel a saját mappánkban:
micro ~/rendszer_mentes.sh
2. A szkript kódja
Másold be az alábbi kódot a szerkesztőbe. Olvasd el figyelmesen a kommenteket (a # jellel kezdődő sorokat), mert azok magyarázzák el a működést:
#!/bin/bash
# ==========================================
# PROFESSZIONÁLIS AUTOMATIKUS MENTÉSI SZKRIPT
# ==========================================
# 1. BEÁLLÍTÁSOK (Módosítsd a saját igényeid szerint!)
FORRAS_MAPPA="/var/home/kjanos/Dokumentumok"
MENTES_DIR="/var/home/kjanos/Biztonsagi_Mentesek"
IDOBELYEG=$(date +%Y%m%d_%H%M%S)
FAJLNEV="dokumentumok_mentes_${IDOBELYEG}.tar.gz"
# 2. MENTÉSI MAPPA ELLENŐRZÉSE
# Ha nem létezik a célmappa, a szkript automatikusan létrehozza
if [ ! -d "$MENTES_DIR" ]; then
echo "A mentési könyvtár nem létezik. Létrehozás: $MENTES_DIR"
mkdir -p "$MENTES_DIR"
fi
# 3. A MENTÉSI FOLYAMAT INDÍTÁSA
echo "----------------------------------------"
echo "Biztonsági mentés indítása..."
echo "Forrás: $FORRAS_MAPPA"
echo "Célfájl: $MENTES_DIR/$FAJLNEV"
echo "----------------------------------------"
# A tar parancs futtatása. A háttérben gzip tömörítést használunk.
tar -czvf "$MENTES_DIR/$FAJLNEV" "$FORRAS_MAPPA"
# 4. SIKERESSÉG ELLENŐRZÉSE
# A Linuxban a $? változó tárolja az utolsó parancs kilépési kódját. A 0 jelenti a sikert.
if [ $? -eq 0 ]; then
echo "----------------------------------------"
echo "SIKER: A biztonsági mentés sikeresen elkészült!"
echo "----------------------------------------"
else
echo "HIBA: A mentés során hiba lépett fel!" >&2
exit 1
fi
# 5. AUTOMATIKUS TAKARÍTÁS (Opcionális, de hasznos!)
# Hogy ne teljen meg a lemez, ez a parancs megkeresi a mentési mappában az
# 30 napnál régebbi (.tar.gz) fájlokat, és kíméletlenül letörli őket.
echo "Régi mentések ellenőrzése és takarítása..."
find "$MENTES_DIR" -type f -name "*.tar.gz" -mtime +30 -exec rm {} \;
echo "Takarítás kész. A szkript sikeresen lefutott."
Mentsd el a fájlt (Ctrl + S), majd lépj ki a szerkesztőből (Ctrl + Q).
3. A szkript futtathatóvá tétele
Ha most megpróbálnád elindítani ezt a szkriptet, a Linux biztonsági okokból megtagadná a végrehajtást, mert egy újonnan létrehozott szöveges fájlnak alapértelmezetten nincs "futtatási" jogosultsága. Ruházzuk fel a fájlt ezzel a joggal a chmod paranccsal:
chmod +x ~/rendszer_mentes.sh
4. A szkript tesztelése
Most már indíthatod a saját programodat a terminálból. Mivel a saját mappádban állsz, a parancs elé ki kell tenned a ./ jelzést (ami azt mondja a rendszernek, hogy pontosan az aktuális könyvtárban keresse a végrehajtandó fájlt):
./rendszer_mentes.sh
Nézd végig a képernyőn lefutó szövegeket. Ha mindent jól csináltál, a szkript végén megjelenik a zöld "SIKER" üzenet. Ellenőrizheted az eredményt az ls paranccsal:
ls -lh ~/Biztonsagi_Mentesek/
Látni fogod a precízen, másodpercre pontosan felcímkézett tömörített archívumodat.
Hogyan tovább? Automatizáljunk
Most már van egy saját, működő mentési szkripted. Ahhoz azonban, hogy ez a szkript magától, emberi beavatkozás nélkül fusson le például minden éjjel 2:00-kor, össze kell kötnünk a rendszerszintű időzítőkkel. Ezt a feladatot a Linuxban a tradicionális cron vagy a modern systemd-timers végzi. Ezeknek a konfigurálását az útmutató következő része szól. Addig is, ezt a szkriptet bármikor manuálisan is elindíthatod, mielőtt egy komolyabb rendszerfrissítésbe vagy konfiguráció-módosításba kezdenél.