martedì 25 novembre 2008

Backup? No problem

In quanti si sono sentiti ripetere, dopo l'ennesimo blackout, ( vi aspettavate "cambia filesystem e metti ext3 al posto di reiserfs" ... lo so che ve l'hanno detto - ed hanno ragione - ma la frase e' un altra.. )


" FAI IL BACKUP DEI TUOI DATI " ?


In molti lo so.. il mio prof di Sistemi Operativi lo diceva sempre.. persino quando gli chiedevo se potevo portargli il PC per fargli vedere il mio nuovo driver della ventolina del PC.


Beh, il senso del post, oltre a mettervi paura, e' quello di insegnarvi un nuovo comando per backuppare i vostri dati. Si, direte voi, a cosa mi serve? Ho scaricato l'ultima versione di Copio&&Salvo 3.0.3 ( e l'ho crackata.. anche se e' GPL mi piace crackare i programmi coi serialZ trovati sui siti di wareZ ) che funziona benissimo.. Oppure state usando cp da tempo immemore, ( non nomino dd perche' solo chi non ha cervello usa dd per backuppare i dati ) cosa che va piu' che bene ma che si puo' fare in un modo molto piu' veloce.


Innanzitutto, il comando e' questo:


(cd /src/dir && tar cf - . ) | ( cd /dst/dir && tar xf -)
Quelli di voi che conoscono gia' la bash e il comando tar puo' gia' dire " Accidenti, e' vero! ", copiare / incollare la riga sopra nel loro scriptino in cron e chiudere il browser.


Per tutti gli altri, direi di studiarsi la nozione di pipeline: Una volta assorbita, possiamo capire che il nostro comando entra nella directory da copiare, e se cio' ha successo ( le && sono l'and logico in bash, eseguo solo se il comando prima e' ritornato con VERO ) eseguo tar con i parametri c ( create ) e f ( file ). Il - sta ad indicare lo stdout e il . la directory corrente. Cioe' creo un archivio della directory corrente sullo stdout, lo passo attraverso pipeline al comando che mi entra nella dir di destinazione e, se cio' ha successo, avvia tar, con opzione x ( extract ) ed f ( file ). Il - in questo caso indica stdin; quindi estrae l'archivio passatogli da stdin ( e la pipeline fa proprio questo, unisce stdout del primo comando allo stdin del secondo ).


Abbiamo backuppato i nostri dati nella nostra directory di destinazione; il tutto in modo molto piu' veloce rispetto all'aver usato solo cp ( fate una prova con time ... ). Come esercizio per casa, provate a capire il perche' di questa velocita' in piu' .

Sistemare il bootloader / Fixing the bootloader

Mettiamo di aver scasinato il bootloader; ma scasinato pesantemente, tanto che non riuscite ad avviare piu' il vostro sistema preferito.
Piuttosto che reinstallare tutto ( a mo' di esperto windows ) proviamo a sistemare questo problema.

Prendiamo una distro live a _casaccio_ dal nostro archivio personale ( leggasi: dalla pila di CD di fianco al monitor ) e infiliamolo nel nostro bel lettore CD, bootiamo da quest'ultimo ed entriamo nel nostro bellissimo sistema live.
Da notare che noi di X non ce ne faremo nulla; percui, se volete velocizzare e non aspettare che le vostre noccioline diventino piantine, cercate di avviare la live senza farlo partire . 

Sto aspettando che abbiate una shell. Ce l'avete? Vedete il bellissimo # (cancelletto) che indica di stare in una shell di root? Presumo di si'.

Ora, i passi consistono nel montare la nostra partizione di / , montarci in bind sia la directory /dev/ che /proc e poi chrootarci dentro, fare le nostre modifiche per sistemare il bootloader, e riavviare.
Le operazioni sopra riportate, sono tradotte dai seguenti comandi *sh like:
mount /dev/hdd1 /mnt

mount --bind /dev/ /mnt/dev 

mount -vt proc proc /mnt/proc 

chroot /mnt
Stiamo montando /dev/hdd1 ( ho presunto che la vostra / si trovi nella partizione hdd1; se cosi' nonfosse, modificate pure e sostituiteci la vostra partizione di / ) sotto /mnt, con anche /dev/ e proc;ed abbiamo chrootato /mnt, in modo da farlo diventare " il nostro sistema ". Ora le modifiche che farete non interesseranno la live, ma il vostro sistema: Lo avete indietro in tutto e per tutto! Se la live ha riconosciuto l'accesso ad internet, avete internet nel vostro sistema chrootato, e cosi' via.

Molto bene, adesso potete fixare il problema che avete causato. Non sapete come risolvere?Beh, questo si' che non e' affar mio.. potete considerare di reinstallare windows, se vi garba.

L'avete risolto?
 
Molto bene, uscite con exit e fate un reboot. Tirate fuori la live e risbattetela nel vostro "archivio".Se il problema non si e' risolto, ripetete i passi descritti sopra e riprovate: la fortuna assiste gliaudaci.