NAS backup

Tovább folytatódik a NAS kálváriám. Jelenleg éppen backupot készítek a terabyte-okról. A helyzetet felesleges részletesen elemezni, viszont megosztanék egy fontos részt, hátha másnak is jól jön majd egy (szép) napon. Tehát: Finderrel ilyenkor már nem szabad másolni. Kisebb mappákra, napi műveletekre tökéletes, de sok fájl, nagyobb adathalmaz esetén reménytelenül el fog szállni. Ezt vérrel tanultam meg. Pedig nem akartam sokat, összeszedtem 10-15 mappát, kijelöltem őket, azt gondoltam, hogy ez majd jó lesz így. Nem lesz jó, először is “átszámolja” a fájlokat, néhány óra elteltével a másolás kellős közepén belepusztul:


Igen, ez Snow Leopard, a 2007-es beszerzésű Mac minimen, amivel a másolást végeznem kell. Itt sajnos nem érhető el a Lion. A hibaüzenetre persze az Apple semmit sem mond.

Egyetlen megoldásnak az látszott, hogy kisebb adagokban másolgatok, de hihetetlen kényelmetlen és manuális munkának tűnt nem beszélve arról, hogy vissza kellett cmd-i-vel ellenőriznem, hogy azonos méretűek-e a mappák, tehát sikeres volt-e a másolás. Ezt csinálgattam egy darabig, utána pedig professzionális segítséghez fordultam.

Azt tudtam, hogy valamibe beszarik a másolás. Igazából teljesen mindegy mibe, nekem egy hibatűrő módszer kell, olyan, ami a probléma esetén csak naplóz, de nem vacakol, hanem továbblép és folytatja a munkát. Gondolkodtam azon, hogy felteszek egy Forkliftet, vagy Pathfindert, amikkel valószínűleg megoldható ez a probléma, de valahogy mégsem akartam ezért külön programot vásárolni.

Az rsync picit félrevezető nevű parancssoros program. Szinkronizál, ahogy a nevében is benne van, nem pedig másol. Pedig pontosan erre a problémára való: egy mappát szépen legyárt egy másik helyre, tart, ameddig tart, kerül, amibe kerül. Közben csendben naplózza, ha valamivel gondot talált, aztán majd elbíbelődik vele, aki akar, kézzel, lábbal.

Rsync van Mac-en is alapból, viszont az egy régebbi változat, amivel, ironikusan, nem tudjuk éppen a Mac-es kiterjesztett fájl attribútumokat (xattr) másolni. Ez a gyakorlatban azt jelenti, hogy ha megváltoztattuk egy mappának a színét, akkor azt ez a régebbi változat nem viszi át.

Be kell szereznünk egy aktuális rsync-et, viszont ez nem mindenki számára triviális. Erről már volt korábban szó: egyszerűbb feladatokra teljesen felesleges csomagkezelőt telepíteni, aki ezt a posztot érdemben olvassa, bizonyára nem használ semmiféle Mac-es csomagkezelőt, nekik készült a Csokitools. Ez az én projektem, hozzám hasonlóak kiszolgálására, akik azt a néhány parancssori dolgot akarják csak, mással meg nem akarnak vacakolni. Korábban már írtam a projektről. Első lépésben tehát töltsük le az rsync-et.

Ez egy zip fájlt dob az asztalra, a telepítés meglehetősen egyszerű: sudo unzip -d /usr/local majd húzzuk rá a zip-et a Terminal ablakra, ami beírja a pontos elérési útvonalat. Enter, jelszó, majd máris van egy új rsync-ünk. (Általában a PATH-ba kell ehhez tenni a /usr/local/bin mappát, ha nincs benne nálunk, értsd, a telepítés után is 2.x verziószámot ír az rsync --version parancs, akkor teljes elérési utat kiírva tudjuk indítani a 3.x-es frisset: /usr/local/bin/rsync)

Ha az előkészítéssel megvagyunk, akkor indíthatjuk is a másolási műveletet! Az egyszerűség kedvéért a végeredményt mutatom csak meg, amit értelemszerűen Terminalba kell bemásolni:

angeldays-mini:~ mini$ /usr/local/bin/rsync --archive --recursive --xattrs /Volumes/backup/ /Volumes/Daisy/backup

Az zölddel jelölt mappa a forrás, a kékkel jelölt a cél, a szürke a prompt. A forrásnál kiemeltem a trailing slash-t, ebben az esetben fontos:

A trailing / on a source name means “copy the contents of this directory”. Without a trailing slash it means “copy the directory”.

A mappákat nem muszáj tudnunk magunktól, itt is alkalmazható a módszer, hogy megfogjuk a mappát Finderben és egyszerűen a szerkesztett parancsra dobjuk, ami automatikusan beírja a megfelelő elérési útvonalat. A /Volumes mappában találjuk mindig a felmountolt megosztásokat egyébként.

A parancs kiadása után látszólag nem történik semmi, de ez így a jó. Időnként naplózik bele valamit, ha valamivel gondot talált (nálam általában a különböző .DS_Store fájlokkal volt baja), de a végén gyakorlatilag lemásolja a kijelölt mappákat. Ha nagyon nem bírunk magunkkal, az Activity Monitor Network fül alatt nézhetjük, hogy tolja ki a megákat másodpercenként, vagy nyomhatunk egy cmd-i kombinációt a megfelelő megosztáson, ami frissíti mindig az éppen elérhető gigák számát, ebből látszik szépen, hogy másol.

Tisztában vagyok vele, hogy az ismertetett módszer teljesen triviális sokaknak, de azzal is tisztában vagyok, hogy sokaknak lesz majd hasznos ismertető, ahogy nekem is az lesz majd később, amikor újra eszközökhöz kell nyúlnom, hogy az adataimat mentsem a NAS-ról. Az rsync ennél természetesen sokrétűbb parancs, a fent ismertetett módszer csupán egy alkalmazási példa arra, hogyan járjunk el egy ilyen esetben.

TL;DR NAS adatmentéshez Finder copy helyett használjuk az rsync-et, ügyelve arra, hogy a legfrissebb verziónk legyen, ami innen tölthető. Ez után a /usr/local/bin/rsync --archive --recursive --xattrs /Volumes/backup/ /Volumes/Daisy/backup forrás (+trailing slash) és cél mappa megadásával indíthajuk a folyamatot, ami csak a hibákat naplózza és végeredményben előállítja a két mappát.