8.4 Biztonsági mentés és szinkronizálás
Az előző fejezetben megtanultuk, hogyan fűzhetünk össze és tömöríthetsz mappákat a tar és a gzip segítségével. Ez a módszer tökéletes, ha kisebb konfigurációs mappákról vagy dokumentumokról készítesz napi mentést. Mi történik azonban akkor, ha a mentendő adatmennyiség nem néhány megabájt, hanem több száz gigabájt – például egy hatalmas családi fotóarchívum, 4K-s videók, vagy a helyben futtatott nagy nyelvi modell (LLM) több tíz gigabájtos súlyfájljai?
Ha minden egyes nap egyetlen új fájl miatt újra és újra becsomagolnál 200 GB-ot, azzal nemcsak a processzorodat égetnéd feleslegesen, de a merevlemezedet is pillanatok alatt teleszemetelnéd. Ráadásul a hálózaton keresztül történő átvitel is órákig tartana.
Ezen a ponton lépünk túl az egyszerű archiváláson, és belépünk a szinkronizálás világába. Megismerkedünk a parancssor két bevált hálózati adatmozgatójával, az scp-vel és az rsync-cel, valamint átvesszük a professzionális rendszergazdák által használt mentési stratégiákat.
8.4.1 Az scp (Secure Copy): A parancssori másolás hálózati kiterjesztése
Az scp a Secure Copy (biztonságos másolás) rövidítése. A legegyszerűbb módja annak, hogy fájlokat mozgass két gép között a hálózaton. Ha az előző fejezetben megismert alapvető cp parancs működését megértetted, az scp használata gyerekjáték lesz, ugyanis a szintaxisa szinte teljesen megegyezik vele, csupán az útvonal elé be kell gépelned a távoli gép SSH elérhetőségét.
Az scp teljes egészében az SSH protokollra épül, ami azt jelenti, hogy az adatfolyam végponttól végpontig titkosított, és ha a 8.2-es fejezetben beállítottad a kulcsalapú azonosítást, az scp is jelszó kérése nélkül, azonnal futni fog.
Fájl másolása a saját gépedről egy távoli gépre (Feltöltés)
A parancs felépítése: scp [kapcsoló] forrás_fájl felhasználó@távoli_IP:/cél/mappa/
scp ~/Letöltések/fontos_adat.txt kjanos@192.168.1.50:/var/home/kjanos/Dokumentumok/
Fájl másolása távoli gépről a saját gépedre (Letöltés)
Egyszerűen megfordítjuk a forrás és a cél helyét:
scp kjanos@192.168.1.50:/var/home/kjanos/Mentett_Jatek.tar.gz ~/Saját_Mentések/
Teljes mappák másolása rekurzívan
Ha nem egyetlen fájlt, hanem egy egész könyvtárat szeretnél átmásolni, a cp parancshoz hasonlóan itt is kötelező kitenned a -r (recursive) kapcsolót:
scp -r ~/Képek/ kjanos@192.168.1.50:/var/home/kjanos/Hálózati_Képek/
Mikor használd az
scp-t?Az
scpegy kiváló, gyors "tűzoltó" eszköz. Ha át kell dobni egy darab filmet a laptopodról a TV-re kötött mini PC-re, vagy le kell töltened egy darab konfigurációs fájlt a szerverről, azscpa legkézenfekvőbb megoldás. Nagyobb mentésekre és folyamatos szinkronizálásra azonban alkalmatlan, mert vakon másol: ha a 10 GB-os mappából csak egyetlen 1 KB-os fájl változott meg, azscpa futtatásakor mind a 10 GB-ot újra átküldi a hálózaton.
8.4.2 rsync: Okos másolás és az inkrementális szinkronizáció
Ha az scp egy sima teherautó, akkor az rsync (Remote Sync) egy mesterséges intelligenciával felszerelt logisztikai központ. Az rsync a Linux világ egyik legzseniálisabb szoftvere, amelynek alapértelmezett viselkedése az inkrementális (növekményes) szinkronizáció.
Az rsync lelke a hírhedt delta-transfer algoritmus. Amikor kiadod a parancsot két mappa szinkronizálására, az rsync nem kezd el vakon másolni. Először villámgyorsan összehasonlítja a forrás és a célmappa tartalmát (méret, módosítási dátum vagy ellenőrzőösszeg [checksum] alapján), és kizárólag azokat a fájlokat – vagy fájlrészleteket – másolja át, amelyek valóban megváltoztak vagy még nem léteznek a célhelyen.
Ha van egy 50 GB-os virtuális gép lemezképed, amiben átírtál 2 megabájtnyi adatot, az rsync képes hálózaton keresztül csak azt a 2 megabájtot átküldeni ahelyett, hogy az egész 50 GB-ot újra elküldené.
Az rsync alapvető kapcsolói: -avzh
Az rsync parancsnak kismillió kapcsolója van, de a gyakorlatban az esetek 95%-ában egyetlen fix kombinációt fogsz gépelni, amit érdemes örökre megjegyezni: -avzh (vagy egyszerűen -avz).
-a(Archive mód): Ez a legfontosabb. Ez egy gyűjtőkapcsoló, ami biztosítja, hogy a másolás során a mappaszerkezet rekurzívan megmaradjon, és a fájlok minden metaadata sértetlenül átmásolódjon (tulajdonos, csoportjogok, hozzáférési jogosultságok, szimbolikus linkek és az eredeti időbélyegek).-v(Verbose): Részletes kimenet a terminálba, látod mit csinál éppen.-z(Compress): Hálózati átvitel során az adatokat röptében tömöríti, így kevesebb sávszélességet használ.-h(Human-readable): A fájlméreteket és az átviteli sebességet emberi számokként (pl. 45 MB/s) írja ki.
8.4.3 Helyi mentések rsync-cel
Az rsync tökéletesen működik tisztán helyben is, például ha a számítógéped belső SSD-jéről egy külsőleg bedugott USB-s merevlemezre szeretnél mentést készíteni.
Mielőtt kiadnád a parancsot, meg kell tanulnod az rsync egyetlen kritikus buktatóját, amit minden kezdő Linuxos elront legalább egyszer: a forrásmappa végén lévő perjel (trailing slash) szerepét.
Nézzük meg a két esetet, ahol a forrásunk a ~/Dokumentumok mappa, a célunk pedig a /run/media/usb/Mentes könyvtár.
1. eset: NINCS perjel a forrás mappa végén
rsync -avzh ~/Dokumentumok /run/media/usb/Mentes
Eredmény: Az rsync magát a Dokumentumok mappát is átmásolja. A célhelyen a struktúra így fog kinézni: /run/media/usb/Mentes/Dokumentumok/fajlok...
2. eset: VAN perjel a forrás mappa végén (/)
rsync -avzh ~/Dokumentumok/ /run/media/usb/Mentes
Eredmény: A perjel azt jelenti a rendszernek, hogy "a mappa tartalma, de maga a mappa konténer nélkül". Az rsync így a Dokumentumok mappán belül lévő fájlokat önti bele közvetlenül a Mentes mappába. A struktúra: /run/media/usb/Mentes/fajlok...
Aranyszabály: Mindig gondold át, hogy a mappát akarod átvinni (nincs perjel), vagy csak a benne lévő adatokat (van perjel)!
8.4.4 Távoli mentések hálózaton keresztül
Ha az rsync-et hálózaton keresztül szeretnéd használni egy másik linuxos gép eléréséhez, a szintaxisa egyesíti az SSH-nál tanultakat az rsync kapcsolóival. Alapértelmezés szerint a modern rsync automatikusan az SSH-t használja biztonságos csatornaként.
Helyi mappa szinkronizálása a távoli szerverre
rsync -avzh ~/Projekt_Mappa/ kjanos@192.168.1.50:/var/home/kjanos/Halozati_Mentes/
Futtasd le ezt a parancsot először. Ha a mappa mérete 10 GB, a másolás eltart egy kis ideig. Most azonnal futtasd le még egyszer, másodjára is! Látni fogod, hogy a parancs szinte azonnal, 1-2 másodperc alatt végez, és a statisztikában azt írja: Total bytes sent: X bytes, Received: Y bytes. Mivel semmi sem változott, nem küldött adatot.
8.4.5 Haladó trükkök: tükrözés és főpróba
Az rsync igazi ereje akkor mutatkozik meg, ha precíz tükrözéseket akarunk végrehajtani, vagy meg akarjuk védeni magunkat a katasztrófáktól.
1. A mindent elsöprő --delete kapcsoló (Tökéletes tükrözés)
Alapértelmezés szerint az rsync csak hozzáad és frissít a célmappában. Ha a te saját gépeden törölsz egy fájlt, az a következő szinkronizáláskor a mentési célhelyen ott fog maradni. Idővel a mentésed tele lesz olyan szeméttel, amit te már régen töröltél az élő rendszeredről.
Ha azt szeretnéd, hogy a célmappa a forrásmappa pontos, hű másolata (tükörképe) legyen, használd a --delete kapcsolót:
rsync -avzh --delete ~/Dokumentumok/ kjanos@192.168.1.50:/var/home/kjanos/Mentes/
Vigyázat! Ha ezt a parancsot futtatod, és a távoli gép Mentes mappájában voltak olyan egyedi fájlok, amelyek a te helyi Dokumentumok mappádban nem léteznek, az rsync kíméletlenül és véglegesen le fogja törölni őket a távoli gépről, hogy a tükörkép tökéletes legyen.
2. Főpróba: --dry-run vagy -n
Mivel a --delete kapcsolóval vagy egy rosszul elhelyezett perjellel hatalmas pusztítást lehet végezni, az rsync tartalmaz egy szimulációs módot. Ez a --dry-run (vagy röviden -n).
Ha ezt hozzáadod a parancshoz, a program szimulálja a futást, de egyetlen bájtot sem ír a lemezre, és nem töröl semmit. Csak kiírja a képernyőre, hogy mit tenne, ha élesben futna.
rsync -avzh --delete --dry-run ~/Dokumentumok/ kjanos@192.168.1.50:/var/home/kjanos/Mentes/
Futtasd ezt, fusd át a listát. Ha azt látod, hogy a log szerint olyan fájlokat is törölne, amiket nem akarsz, most még megállíthatod és korrigálhatod az útvonalat. Ha a szimuláció tiszta, töröld ki a --dry-run szót, és mehet élesben!
8.4.6 Professzionális mentési stratégiák: A 3-2-1 szabály
Most, hogy a kezedben vannak a technikai eszközök (tar, gzip, rsync), érdemes beszélni a mentés elméleti részéről is. A világ összes scriptje sem ment meg, ha rossz a mentési stratégiád. Az IT iparágban aranyat érő, kötelező szabvány a 3-2-1 mentési szabály.
| Szabály elem | Mit jelent a gyakorlatban? | Hogyan valósítod meg parancssorból? |
|---|---|---|
| 3 kópia | Legyen legalább három példányod az adatokból (1 élő elsődleges + 2 mentés). | Élő mappa az SSD-n + 1 mentés a külső merevlemezen + 1 mentés a hálózaton. |
| 2 különböző hordozó | Tárold a mentéseket legalább két különböző típusú adathordozón (pl. belső SSD, külső HDD, NAS, felhő, optikai lemez). | Ha a fő géped és a mentési célod is ugyanazon a belső NVMe SSD külön partícióin van, egy fizikai hardverhiba (leégés, túlfeszültség) egyszerre semmisíti meg mindkettőt. |
| 1 külső helyszín | Legalább egy mentési példányt tárolj fizikailag máshol, mint ahol élsz vagy dolgozol (Off-site backup). | Ha a házat tűzkár, csőtörés vagy betörés éri, a szobában lévő PC és a mellette lévő külső USB HDD egyszerre semmisül meg. Egy távoli szerver (vagy a szüleid házában elhelyezett, SSH-val elérhető gép) megoldja ezt a problémát. |