Mailing List del Fortunae LUG ============================= Che ne dite di un bel "Ripristino di Sistema" anche per linux? Bè è abbastanza semplice non ci vuole molto. Per prima cosa reinstallate tutto, chi ben comincia è a metà dell'opera. Ricordate di installare il pacchetto 'cvs', altrimenti non si potrà far nulla. Cvs ci permetterà di tenere dei backup incrementali, e noi ne terremo uno di /etc... in modo da taner traccia di tutte le configurazioni del nostro sistema, potendo in futuro tornare indietro a qualunque momento della 'storia di un file'. Un pò come nei platform, che salvi quando vuoi e quando muori puoi tornare ad uno dei salvataggi precedenti:) Ad installazione avvenuta non fate nulla. La prima cosa da fare è decidere dove tenere il repository del backup, probabilmente se usate una distro per cerebrolesi è già stato scelto... io che uso slack invece me lo sono dovuto fare. Ho scelto: /home/root/cvs Perchè da me la /home è una partizione a parte che non formatto quando reinstallo il sistema. Ok, settiamo una bella env: root@jkcal:/etc# export CVSROOT=~/cvs Consiglio di metterlo nel file ~/.bash_profile così viene settata automaticamente ad ogni login. Inizializziamo il repository: root@jkcal:/etc# cvs init Bene, siamo pronti per andare a fare il primo snapshot delle configurazioni di sistema (che sono pulite pulite visto che abbiamo appena installato): root@jkcal:~# cd /etc root@jkcal:/etc# cvs import etc slack8 start (PS. ricordatevi di quel 'start', ne parlerò in seguito) Ci si ritrova in 'vi' a dover editare un file che è il changelog, per adesso usciamo con: :q Al messaggio: Log message unchanged or not specified a)bort, c)ontinue, e)dit, !)reuse this message [...] Action: (continue) ...premiamo il tasto invio. Se compare la frase: No conflicts created by this import ...vuol dire che tutto è andato a buon fine... abbiamo il primo snapshot! Per poter poi tener traccia dei cambiamenti bisogna fare anche il primo checkout: root@jkcal:/etc# cd / root@jkcal:/# cvs checkout etc Ora iniziamo ad editare i file e a configurare quello che vogliamo. Bene è giunto il momento di dire a cvs di tener traccia dei nostri cambiamenti ai files, ora vi spiego come fare. Se abbiamo aggiunto files o directory che prima non c'erano bisogna dire al cvs di tener traccia anche di loro con il comando 'cvs add': root@jkcal:~/etc# cvs add newdir Directory /home/root/cvs/etc/newdir added to the repository root@jkcal:~/etc# cvs add newdir/newfile cvs add: scheduling file `newdir/newfile' for addition cvs add: use 'cvs commit' to add this file permanently Controlliamo quali file sono stati modificati: root@jkcal:/etc# cvs status|less Capiamo che un file è stato modificato dalla scritta: File: inetd.conf Status: Locally Modified Invece se un file non è stato modificato sarà: File: inetd.conf Status: Up-to-date Bene, ordiniamo al cvs di tener traccia dei cambiamenti dei files: root@jkcal:~/etc# cvs commit Ci troviamo di nuovo all'interno del 'vi' per editare il changelog, usciamo nuovamente con: :q Di nuovo: Log message unchanged or not specified a)bort, c)ontinue, e)dit, !)reuse this message [...] Action: (continue) ...premiamo invio. Bene, abbiamo fatto il primo aggiornamento del repository! Continuiamo ad editare i file e ogni tanto facciamo degli altri 'cvs commit' per tener traccia dei cambiamenti. Tutto a posto? Pensiamo che per ora le configurazioni sono buone? Ok allora siamo pronti per rilasciare il primo 'tag'. Infatti fino ad ora se volessimo tornare ad un precedente snapshot dovremmo specificare file e versione da estrarre dal repository... scomodo! Un tag è una 'collezione' di tutte le versioni dei file, in modo che se in futuro vogliamo tornare indietro basta specificare il tag ed estrarremo in un sol colpo TUTTI i file aggiornati alla versione in cui erano quando abbiamo dichiarato quel tag. Salviamo le attuali versioni dei files col tag 'snapshot1': root@jkcal:~/etc# cvs tag snapshot1 Se in futuro vorremo tornare a questo punto basterà invocare: root@jkcal:~/etc# cd / root@jkcal:/# cvs checkout -r snapshot1 etc E se volessimo tornare all'inizio come subito dopo la nostra installazione? Bè è semplice, avevamo dichiarato come primo tag 'start' quindi: root@jkcal:~/etc# cd / root@jkcal:/# cvs checkout -r start etc Inutile dire l'utilità che ha tutto questo quando si commettono degli errori nelle configurazioni... ma anche quando reinstallate... basta un checkout e zac... tutto di nuovo configurato alla perfezione!:) Avvertenze e bug: Le uniche che mi vengono in mente riguardano i files 'passwd', 'shadow' e 'group', infatti fare un checkout di vecchie versioni di quei files potrebbe portare alla perdita di nuovi utenti o alla riattivazione di vecchi e cancellati. Comunque i workaround sono molteplici, ce ne sono di più o meno puliti ma nulla di difficile. Visto che voi siete palati fini, e avete snobbato il mio "Boot sicuro con più Kernel" (o qualcosa di simile), ho cercato di elevarmi e alzare un pò il tiro. Chi non ha capito s'attacca... Paganini non ripete;):PPPP -- /* Federico 's1m0n' Simoncelli <f.simon@xxxxxxxx> http://www.jkcal.org/simon */ int main(){unsigned int g,h=0;while(++h){for(g=(h>1)?2:1;g< h/2+1&&h%g!=0;g++);if(g==h/2+1)printf("%i\n",h);}return 0;} -- "Software is like sex: it's better when it's free." L.Torvalds