Soluții de backup cu rsync

Nu vreau să cred că printre cititorii acestui site mai există încă persoane care nu au cópii de siguranță ale fișierelor importante. Fie că folosiți Time Machine sau alt program, backupul este absolut necesar dacă țineți la integritatea datelor stocate pe computer. Vom vedea în acest articol o metodă de backup care nu necesită nicio aplicație externă – ci doar o unealtă din dotarea Mac OS X (nu, nu e Time Machine!). 

Eu fac o distincție clară între sistemul de operare (Mac OS X sau orice altceva) și date cu caracter general (muzică, filme, imagini, documente, kituri software) care trebuie să fie accesibile oricărui sistem de operare prezent sau viitor, motiv pentru care le țin pe discuri separate și backupul îl fac independent. Pentru mine, sunt trei condiții pe care trebuie să le satisfacă orice soluție de backup a datelor pentru a o lua în considerare:

  • să poată sincroniza rapid o cantitate mare de date (ceva în jurul valorii de 1-2 TB), motiv pentru care prefer backup-ul primar pe HDD-uri și nu pe discuri optice sau servicii de genul Amazon S3 (deși prețurile sunt aproape acceptabile);
  • formatul backup-ului să permită acceasarea datelor de pe orice sistem de operare fără a folosi programe complexe sau costisitoare, astfel încât datele mele să nu depindă de un anume soft sau sistem de operare;
  • modalitatea de backup să se facă prin metode și instrumente cât mai simple și cât mai răspândite, asupra cărora să am control maxim, astfel încât să poată fi reproduse cât mai ușor pe o scară de timp cât mai lungă (ce ne facem dacă firma care produce softul nostru preferat de backup dă faliment sau decide să ridice foarte mult prețul produselor/serviciilor?);

Până în prezent, cea mai bună metodă de backup care îndeplinește cu brio toate aceste condiții este rsync, o unealtă extrem de puternică și cu o serie de avantaje: este livrată cu majoritatea distribuțiilor *nix, deci se găsește în orice instalare de Mac OS X, Linux, BSD sau Solaris (deși opțiunile disponibile s-ar putea să difere de la un sistem de operare la altul). Modalitatea de backup este extrem de simplă (o copiere, fără a folosi arhive și formate proprietare) și rapidă (dacă operațiunea de backup este efectuată măcar săptămânal). Pentru că datele sunt doar copiate și nu procesate, sunt accesbile oricărui sistem de operare care poate citi sistemul de fișiere al discului/partiției pe care s-a efectuat backup-ul (eu folosesc un disc întreg și nu partiții, pentru că datele ajung aproape de 1TB).

Înainte de a analiza comanda, voi face o scurtă precizare legată de terminologie: voi folosi origine pentru calea setului de fișiere și foldere ce urmează a fi arhivate și destinație pentru calea finală a backup-ului. Arhivare și backup vor fi de asemenea sinonime perfecte în cele de urmează, arhivare neavând în textul de mai jos înțelesul de comprimare.

Nu vă fie teamă de Terminal, avantajul rsync-ului rulat astfel este acela că aveți control absolut asupra sa. Există diverse programe gratuite care nu sunt altceva decât o interfață grafică pentru rsync. Eu prefer variantă brută:

rsync -avh –delete –ignore-errors –exclude \
‘.DS_Store’ –exclude ‘.Trashes’ –exclude ‘.Spotlight*’\
–exclude ‘.fseventsd’ –exclude ‘$RECYCLE.BIN’\
/Volumes/STORAGE/ /Volumes/ARCHIVE/

(Caracterul „\” este folosit aici pentru ruperea elegantă a comenzii pe mai multe rânduri, din motive pur estetice. Pentru folosirea comenzii în Terminal, eliminați „\” din exemplul de mai sus și nu confundați „\” cu „/”).

Să luăm pe rând, fiecare secțiune a comenzii. Prima opțiune , -a,  ține loc următorilor parametrilor -rlptgoD care, contrar aparențelor, nu reprezintă o înjurătură în klingoniană, ci sunt niște opțiuni utile pentru operațiuni de arhivare, specifice mai ales sistemului de fișiere: r – arhivarea se face recursiv, parcurgând directoarele, l – va copia și scurtăturile (symlinks), p – va păstra permisiunile fișierelor, t – va păstra timestamp-ul fișierelor, g – va păstra grupul din care fac parte fișierele, o – va păstra autorul fișierelor, D – va copia fișierele speciale. Astfel, în loc să scriem ‘rsync -rlptgoD’, putem scrie doar rsync -a.

Trecând la a doua opțiune, -v (de la „verbose”), rsync va afișa detalii despre procesul de backup (pe ecran sau într-un fișier). -h este prezent doar pentru ca afișarea numerele care reprezintă mărimi de fișiere să fie făcute în unități mai comode (MB, GB și nu octeți, caz în care aceste numere ar deveni prea lungi). rsync va analiza destinația backup-ului și va șterge de acolo fișierele care nu se regăsesc în origine, folosind opțiunea –delete. Acest lucru asigură o sincronizare 1:1 a datelor și menține sub control strict dimensiunea backup-ului, identică cu dimensiunea originii. Comportarea „din oficiu” a comenzii este ca ștergerea să aibă loc înainte de procesul de arhivare, comportare care se poate schimba (‘man rsync’ pentru detalii). Urmează opțiunea –ignore-errors care forțează ștergerea fișierelor din destinație chiar dacă sistemul întâmpină erori de tipul I/O. Nu vom intra în amănunte tehnice de ce se poate întâmpla așa ceva, este bine de știut că opțiunea este una utilă în acest caz. Urmează o serie de fișiere care nu au sens să fie depozitate în arhivă și care pot fi ignorate de rsync folosind pentru fiecare opțiunea –exclude. Am ales să nu îmi încarc arhiva cu .DS_Store, .Trashes, .Spotlight*, .fseventsd sau $RECYCLE.BIN (ultimul pentru cazul în care arhivăm discuri formatate NTFS). Următoarele două opțiuni sunt, în ordine, sursa (originea) și destinația backup-ului. Atenție să nu le încurcați, pentru că în acest caz, folosirea opțiunii –delete duce la pierdere de date!

Prima rulare a comenzii din exemplul de mai sus va dura mai mult, în funcție de cantitatea de date arhivate și de performanțele hardware ale Mac-ului. În viitor, la rularea comenzii în aceiași formă, rsync va copia din origine doar ce nu găsește în destinație, procesul de backup reducându-se probabil la câteva secunde sau minute. Astfel, pentru câteva minute consumate săptămânal, puteți avea o copie fidelă a datelor prețioase, accesibile oricând, pe orice sistem de operare prezent sau viitor (care să poată citi sistemul de fișiere de pe discul pe care s-a făcut backup-ul). Evident, forma comenzii din exemplul de mai sus reprezintă o opțiune personală, aceasta putând suferi modificări după placul oricărui utilizator.

rsync are o mulțime  facilități care nu au fost discutate: poate comprima datele, economisind spațiu dar astfel durata procesului de backup crește, poate efectua backup la distanță, prin rețea sau prin Internet sau poate rula în fundal, la anumite perioade de timp prestabilite. Pentru mai multe detalii despre opțiunile rsync, puteți citi în manualul comenzii (rulând ‘man rsync‘ în Terminal sau consultând varianta online).