Indice articolo
Backup, formattazione, reinstallazione e riconfigurazione a puntino di Linux Mint con pochi click e meno di mezz'ora. Ecco il mio metodo, basato su alcuni script per automatizzare alcune operazioni con sequenze di comandi da terminale, spiegato nel dettaglio.
Premessa
A margine del video sulla mia organizzazione di Linux Mint, ho ricevuto diverse richieste di chiarimento su 3 script, che contengono sequenze di comandi c.d. shell, da me realizzati per riconfigurare su misura il sistema, in base alle mie esigenze, in meno di mezz'ora da prima della formattazione.
Anche se informatico, non sono certo un tecnico di Linux ed il mio meccanismo è piuttosto rudimentale agli occhi di un esperto vero!
Però devo dire subito che questo non è il mio solito tutorial le cui operazioni sono alla portata del principiante completamente inesperto.
Cerco comunque di spiegare nel modo più semplice possibile i dettagli perciò se ti ho disorientato ma non ancora scoraggiato, potresti partire dalla visione dei primi minuti di quel video.
E poi valutare anche l'articolo sulla introduzione al terminale e alla shell di Linux.
Scarica i miei script per Linux Mint 21.x e 22 Cinnamon e LMDE 6
Premetto quindi che ricreare in base alle proprie esigenze il primo script, quello sul salvataggio di configurazioni di specifici programmi, non è alla portata di tutti, richiede una discreta comprensione della struttura della home e tempo. Perché devi cercare i singoli file di configurazione che vuoi mantenere tra un'installazione e l'altra di Linux Mint, spero senza chiedere a me. Però suggerisco anche un metodo alternativo semplice ma un po' brutale e meno mirato per cercare di raggiungere il medesimo risultato.
Quanto al secondo script esso permette la reinstallazione con un solo comando di tutti i programmi aggiuntivi che usi di solito, che non siano già inclusi in Linux Mint. Direi che questo invece è alla portata di chiunque non abbia già pensato da solo a prepararselo. Ed è facile comprendere come realizzare il proprio. Il terzo, sulla modifica delle impostazioni del desktop e dell'ambiente desktop Cinnamon, si trova in mezzo quanto a complessità.
In tutti e tre i casi è semplicissimo creare un lanciatore desktop per poterli eseguire con un semplice doppio click e senza impartire alcun comando in una finestra di terminale.
Gli script e la mia procedura
Prima di andare a curiosare nella struttura del file system Linux lasciami riepilogare come procedo e come sono coinvolti i miei script. Appena prima di formattare, con un doppio click, lancio il primo script per recuperare selettivamente alcune impostazioni di differenti programmi. Lo script crea una nuova cartella nella mia home in cui ricreo la struttura della home stessa che contiene solo ciò che desidero mantenere.
A questo punto creo un backup della home con Strumento di backup e lo salvo in un disco differente da quello del sistema.
Avvio la nuova installazione di Linux Mint da USB cancellando l'intero disco. Al primo avvio da hard-disk della nuova installazione, imposto i mirror più veloci dei repository e applico gli aggiornamenti già rilasciati. Lo faccio ancora a mano ma in effetti si tratta di operazioni che sarebbero anch'esse automatizzabili. Terminati gli aggiornamenti, riporto con Strumento di backup il contenuto della home in posizione.
Lancio quindi il secondo script che imposta repository aggiuntivi necessari per installare alcuni programmi e installa tutti i programmi aggiuntivi che mi servono con APT, da Flathub o anche da file .deb salvati nel disco supplementare.
Al termine, lancio il terzo script che contiene modifiche al database dconf
, installa desklet e applet Cinnamon e ripristina diverse impostazioni di sistema e del desktop. Un riavvio di Cinnamon stesso con CTRL
+Alt
+Esc
e dopo meno di mezz'ora dalla formattazione il mio PC è riconfigurato nei minimi dettagli e sono di nuovo operativo per fare qualunque cosa.
Per il primo script: dove cercare cosa
Partiamo dallo script con cui salvo le configurazioni dei programmi che mi interessano di più. Per farlo riprendo nozioni espresse nel mio articolo sulla reinstallazione di Linux Mint cui ti consiglio di dare un'occhiata.
In quell'occasione ho spiegato che il grosso delle impostazioni personali di ogni utente, relative a programmi e alla personalizzazione, sono nascoste nella sua cartella home. Normalmente non sono visibili grazie alla convenzione di Linux per cui, se un file o una cartella hanno un nome che inizia con un punto, non devono essere visibili. Un po' come avviene anche in Windows con i file protetti e di sistema.
Attivare la visualizzazione di file e cartelle nascosti
Nemo, il file manager dell'ambiente desktop Cinnamon, ma anche quelli di altri ambienti come MATE e Xfce, consentono di attivare e disattivare la visualizzazione di tali file e cartelle nascosti dal menu sotto Visualizza e, quasi sempre, anche con la combinazione di tasti CTRL
+ H
che sta per hidden, nascosto.
Attivata la visualizzazione di file nascosti nella home appaiono contenuti che normalmente non sono visibili. File e cartelle che, come accennato, hanno un nome che inizia con il punto.
Ovviamente quello che vedi nella mia home rispecchia lo stato del mio sistema con l'aggiunta dei programmi che ho installato io e che non fanno parte della dotazione software predefinita di Linux Mint. Normalmente, a fine installazione, ci trovi solo le cartelle .config
, .cache
e .local
.
Ti sarà comunque facile isolare alcuni nomi che ti sono familiari. Ad esempio dopo il primo avvio di Firefox o Thunderbird trovi la cartella .mozilla
con profili e impostazioni.
Io ho la cartella con le impostazioni di aMule, quella di file temporanei .cache
che puoi esplorare ma che ai nostri fini direi possa essere ignorata. Ho poi creato cartelle .icons
e .themes
per temi desktop e di icone che scarico da cinnamon-look.org e che salvo e ripristino attraverso differenti installazioni di Mint.
Se hai flatpak installati troverai le impostazioni dei programmi in questo formato nella cartella .var
.
Penso sia meglio ignorare i singoli file nascosti che si trovano al termine dell'elenco delle cartelle.
Nota però che la stragrande maggioranza delle impostazioni dei programmi e alcune di Cinnamon, si trovano di solito nelle cartelle .config
e .local/share
.
Esplorazione delle impostazioni
Non la farò semplice. Per comprendere cosa contengano, dovrai esplorarle singolarmente ed aprire e leggere i singoli file che, a meno che non siano accompagnati dall'indicazione Binario
, sono file di testo. Io non sono in grado di sapere se riuscirai a comprenderne il contenuto ma questo è ciò che ho fatto io e continuo a fare quando installo programmi che non ho mai usato.
Ovviamente potresti avere interesse a mantenere configurazioni di specifici programmi, diversi dai miei. Oltre a curiosare nelle cartelle nascoste, potresti effettuare ricerche nel web, preferibilmente in inglese, del tipo "where are nomeprogramma settings stored".
Il modo più semplice ma sconsigliato
C'è una strada più semplice ma un po' meno pulita, per così dire, che consiste nel copiare altrove l'intera cartella home con tutto quanto presente con i file nascosti attivi, per poi riportarla nella successiva installazione. Ma, come ho spiegato nel video sulla reinstallazione, lo farei solo se vuoi reinstallare la stessa versione dello stesso sistema operativo. Perché i programmi saranno nelle medesime versioni e quindi la relativa struttura e organizzazione sarà identica.
È la stessa ragione per cui io non sono un sostenitore del ricorso ad una partizione home. E trovo persino assurdo condividerla pure tra diverse distribuzioni Linux.
Se, ad esempio, salvi tutta la home da Mint 21.3, per installare Mint 22, non ripristinerei tutte le configurazioni indistintamente. Perché quasi tutti i programmi aggiuntivi che installerai, flatpak a parte, saranno in versioni molto più nuove delle precedenti che usavi. E non è garantito che questo o quel programma non abbia subito modifiche all'organizzazione dei file tali da non dare i risultati sperati e per di più sporcare la nuova installazione. Specie se trasporti configurazioni di programmi che non reinstalli. E con il rischio poi di continuare a mantenere e riportare nel tempo configurazioni inutili prima di ogni formattazione.
Il discorso cambia se passi attraverso aggiornamenti di versioni minori di Linux Mint perché allora sei certo che i programmi nei repository saranno nelle medesime versioni.
Una migliore alternativa percorribile
Una via di mezzo è quella di salvare tutti i file e cartelle nascosti in home ma ripristinare singole cartelle dei programmi che ti interessano, con tutti i file in essa contenuti invece che solo specifici file.
Io posso mostrarti alcune delle configurazioni che io salvo e che potrebbero interessarti. Sono utili anche per comprendere il meccanismo del mio primo script.
Mantengo ad esempio l'elenco e l'ordine delle icone dei programmi che ho ancorato sul pannello, cioè nella applet elenco finestre raggruppate, salvando il file 2.json
che trovi in .config/cinnamon/spices/grouped-window-list@cinnamon.org
.
Nota che le impostazioni di applet e desklet si trovano proprio in .config/cinnamon/spices
.
Mantengo le azioni di Nemo perché ne ho create alcune mie. Lo faccio salvando l'intera cartella .local/share/nemo/actions
.
Mantengo i miei font aggiuntivi che ho salvato nella cartella .local/share/fonts
.
Poi ad esempio mantengo il dizionario di parole aggiunte a LibreOffice che si trova nel file standard.dic
dentro .config/libreoffice/4/user/wordbook
. Questo non è cambiato tra la versione 7.4 di Mint 21 alla 24.2 di Mint 22.
Poi ancora mantengo le impostazioni dell'area di lavoro di Gimp tramite il file sessionrc
che trovi in .config/GIMP/2.10
.
Come creare uno script
Ma passiamo agli script. L'ho spiegato nell'articolo introduttivo al terminale e la shell. Uno script è un file di testo che viene eseguito come programma. Non è necessario che abbia un'estensione anche se è consuetudine assegnargli quella .sh.
Uno script deve iniziare con quello che è definito shebang, shabang o anche hashbang. Ovvero con un cancelletto seguito da punto esclamativo e dal percorso del programma che interpreta i comandi nel sistema operativo in uso. In Linux Mint e quasi tutte le altre derivazioni di Debian e Ubuntu è /bin/bash
. Quindi questa è la forma per la prima riga dello script: #!/bin/bash
.
Ogni comando inserito nel documento dalla riga 2 sarà eseguito singolarmente nell'ordine.
Come regola, anche io, per migliore comprensione successiva delle parti dello script, aggiungo un c.d. commento prima di ogni serie di comandi. Un commento è una riga che l'interprete dei comandi salta e non esegue perché istruito in questo senso.
Si crea un commento anteponendo al tuo testo esplicativo del comando un cancelletto (#
)
# commento sul comando
comando interpretato
Se vuoi disporre il commento su più righe, dovrai ripetere il cancelletto iniziale in ognuna di esse.
# Questo è un commento
# su più righe
qui va un comando
Il primo script per il backup selettivo di impostazioni
Il mio script di backup crea anzitutto nella mia home una cartella che io chiamo dario-ripristino, all'interno del quale ricreo la struttura di /home/dario
. Lo fa con il comando mkdir
. Digita nel terminale mkdir --help
per consultare la documentazione di mkdir
.
mkdir /home/dario/dario-ripristino
Se il file che contiene le impostazioni dei pannelli di GIMP si trova in .config/GIMP/2.10
, prima ricreo le cartelle .config
, GIMP
e 2.10
nella mia nuova cartella e poi copio il file in quella posizione.
Così facendo, dopo aver aggiunto Gimp e gli altri programmi nella nuova installazione, copio il contenuto di dario-ripristino nella mia home, sovrascrivendo tutto ed il gioco è fatto.
Il primo passo per il salvataggio di ciascun file è quello di ricreare nella nuova cartella la struttura di cartelle in cui esso si trova rispetto a home. Lo faccio tramite il comando mkdir
con l'opzione -p
che sta per parent, per creare non solo la cartella di destinazione ma anche quelle intermedie. Con
mkdir -p /home/dario/dario-ripristino/.config/GIMP/2.10
nella mia nuova cartella saranno create quella .config, quella GIMP e quella 2.10.
Per copiare un file uso il comando cp
indicando il percorso in cui si trova il file da salvare, seguito da uno spazio e dal percorso in cui salvarlo, quello appena creato con mkdir. Con l'opzione -p
di cp
sono sicuro che vengano mantenute inalterate tutte le caratteristiche originarie del file.
cp -p /home/dario/.config/GIMP/2.10/sessionrc /home/dario/dario-ripristino/.config/GIMP/2.10
Anche per cp
puoi verificare la documentazione digitando nel terminale cp --help
oppure man cp
.
Se vuoi salvare tutti i file contenuti di una cartella come faccio per le azioni di Nemo, dovrai indicare come percorso da cui prelevare file, la cartella .local/share/nemo/actions
seguita dallo slash finale e da un asterisco. In questo modo viene copiato qualunque file o cartella si trovi al suo interno. Il comando
cp -p .local/share/nemo/actions/* /home/dario/dario-ripristino/.local/share/nemo/actions
permette quindi di copiare il contenuto di actions nella mia home e di copiarlo dentro l'omonima cartella nella mia nuova struttura di backup.
Con queste nozioni e consultando il mio primo script, hai sufficienti indicazioni per fare le tue ricerche in base a ciò che vuoi salvare e mantenere tra le installazioni per personalizzare il tuo script. Più avanti vediamo come creare un lanciatore desktop per eseguire il programma con un semplice doppio click.
Il secondo script per le installazioni
Il secondo dei miei script, quello che serve a reinstallare tutti i programmi aggiuntivi, dovresti poterlo ricreare in modo più semplice. Anche per me è stato così all'inizio o quasi. Quando ho compreso che un solo comando apt install
seguito dai nomi di tutti i programmi presenti nei repository ufficiali è sufficiente a compiere l'opera. All'inizio lo salvavo in un file di testo e lo incollavo nel terminale che già basta e avanza.
L'importante è indicare nel comando il reale nome del pacchetto. Puoi verificarlo in Gestore applicazioni nella pagina del programma. Non è necessaria alcuna istruzione per includere dipendenze raccomandate perché Mint lo fa in automatico. Neppure serve scrivere sudo
prima di apt install
. Mint ti chiederà comunque la password visto che l'installazione di nuovi programmi richiede privilegi amministrativi.
Crea un nuovo file, salvalo con il nome che vuoi e inserisci l'hashbang
#!/bin/bash
Poi aggiungi
sudo apt install amule audacious audacity brave-browser codium dconf-editor deluge easytag filezilla flameshot frei0r-plugins gimp gimp-help-it gparted grsync grub2-theme-mint-2k handbrake hplip-gui mediainfo-gui nemo-image-converter nemo-font-manager nemo-audio-tab numix-icon-theme-circle pdfarranger sigil soundconverter stacer vlc xournal
e saranno installati tutti i miei programmi di uso quotidiano. Ovviamente dovrai personalizzare il tuo script ma semplificherai al massimo l'installazione di programmi aggiuntivi dopo una nuova installazione Nota che ad oggi, il browser brave non è presente nei repository di Linux Mint. Nella pagina di installazione in Linux vi sono alcuni comandi per inserire la firma gpg e l'archivio personale di Brave software tra le fonti fidate. È per questo che il mio script di reinstallazione è preceduto dai comandi necessari e seguito da un update degli indici del software con apt update. A questo punto posso installare brave assieme agli altri programmi con apt indicandone il nome brave-browser.
Se desideri installare programmi flatpak, dovrai aggiungere allo script un comando per ciascuno di essi. La forma è
flatpak install nome.del.programma
Prendi nota del nome del pacchetto in Gestore Applicazioni. Ad esempio per installare SpeechNote e il suo plugin per schede grafiche NVIDIA la forma sarà
flatpak install net.mkiol.SpeechNote
flatpak install net.mkiol.SpeechNote.Addon.nvidia
Diciamo poi che hai conservato file .deb per alcuni programmi. Potrai installare con un comando dpkg ciascuno di essi rispettando questa forma:
sudo dpkg -i /percorso/del/file.deb
Il tuo script di reinstallazione è pronto. Salva e chiudi.
Il terzo script: modifica parametri di impostazioni dconf
È giusto da un paio di mesi che la mia organizzazione ha visto l'introduzione di un terzo script. Nulla vieterebbe di incorporarne i comandi nel secondo script ma per ora preferisco tenerlo separato.
È ancora molto rudimentale ed essenziale ed interviene su alcune personalizzazioni del file manager Nemo e del desktop Cinnamon, tra cui l'impostazione della modalità elenco invece che a icone, modifica il formato della data di modifica dei file, attiva la visualizzazione dei file di testo, i menu contestuali Copia In, Sposta In e altri normalmente disabilitati. Poi ancora installa applet e desklet, modifica il comportamento dello screensaver e attiva la visualizzazione sul desktop delle icone Computer, Home e Cestino.
Cosa è il database dconf
Per fare questo, invece che intervenire manualmente nelle Preferenze di Nemo e in varie finestre di impostazioni di Cinnamon, il mio script agisce direttamente da riga di comando sulle relative impostazioni che sono salvate nel database dconf
.
Su wikipedia dconf è definito come uno strumento di gestione di impostazioni e configurazione di sistema a basso livello.
Anche in questo caso, per sapere quali operazioni di modifica impostazioni potrai modificare e automatizzare dovrai esplorare minuziosamente dconf per comprendere dove si trovino i parametri che ti interessano. Il mio consiglio è quello di farlo installando l'editor visuale dconf-editor.
Appena lo apri sei avvertito del fatto che si deve usare molta cautela nel modificare parametri. Finché esplori soltanto non hai alcunché da temere. Ti posso dire che il grosso delle impostazioni di Linux Mint le trovi in com.linuxmint
, org.cinnamon
e org.nemo.preferences
.
Sfogliando dconf-editor in Linux Mint fino a org.nemo.preferences
trovi ad esempio default-folder-viewer
da cui è impostata la modalità predefinita di visualizzazione del file manager Nemo che normalmente trovi proprio in Nemo nel menu sotto Modifica
> Preferenze
> Viste
.
Se clicchi sull'impostazione, dconf-editor ti mostra una descrizione, il valore predefinito "vista a icone", gli altri possibili valori e ti permette ad esempio di intervenire disattivando l'opzione predefinita ed impostando una delle altre possibili. Devi applicare le tue modifiche e ti ricordo di farlo solo se hai compreso su quale parametro stai intervenendo. Quando un parametro sia modificato rispetto al valore predefinito, dconf-editor mostra un'icona a forma di matita.
Per automatizzare le impostazioni, mentre ne sto consultando una, passo il mouse nella barra del percorso sul parametro e una piccola icona appare. Cliccando si può copiare negli appunti il suo percorso per copiarlo nello script dopo il comando dconf write
.
La forma del terzo script
Il mio terzo script inizia con il consueto shebang #!/bin/bash
e usa poi dconf write
seguito dal percorso del parametro da modificare che incollo dagli appunti, da uno spazio e dal nuovo valore. Con
dconf write /org/nemo/preferences/default-folder-viewer "'list-view'"
modifico la visualizzazione predefinita a icone del file manager Nemo in quella ad elenco. Con
dconf write /org/nemo/preferences/menu-config/selection-menu-copy-to 'true'
attivo il menu contestuale "copia in". Puoi provare anche tu ad incollare direttamente nel terminale questi due comandi per vedere il risultato.
Ho citato questi due esempi per farti notare che i valori vero o falso, true o false, devono essere sempre indicati tra apici, virgolette singole o apostrofi come vuoi chiamarli. Mentre i valori che consistono in una stringa, cioè sequenza di caratteri come list-view
richiedono anche virgolette all'esterno degli apici.
Comprese quali impostazioni vuoi modificare rispetto a quelle predefinite e dopo aver spulciato dconf sarai in grado di personalizzare anche il tuo script per la personalizzazione del desktop e di Nemo.
Il lanciatore desktop
Come ho detto i miei script sono sempre salvati in un disco separato da quello del sistema. Ma all'interno di home ho creato e riporto ad ogni nuova installazione, alcuni lanciatori desktop per eseguire gli script con un doppio click.
Come ho spiegato nell'articolo sulla personalizzazione di Cinnamon, crei un lanciatore desktop con un click del pulsante destro del mouse in una zona libera del desktop, scegliendo Crea un nuovo lanciatore qui
.
Assegna un nome che puoi facilmente associare a ciascuno script e sfoglia fino al percorso in cui hai salvato lo script. Assegna se vuoi una icona cliccando su quella a forma di missile e metti il segno di spunta su Lancia nel terminale in modo da controllare lo stato di avanzamento durante l'esecuzione.
Conferma con OK ed il tuo lanciatore è pronto!
Conclusioni
L'avevo detto. Creare un unico comando o script per reinstallare tutti i tuoi programmi aggiuntivi con un'unica azione dopo una nuova installazione del sistema operativo, è un'operazione alla portata di tutti. Gli altri due richiedono mente elastica e tempo e non sono compatibili con la pigrizia.
Io sono tutt'altro che un tecnico se non lo avessi ancora compreso. Ma già in questa forma, questi script di automazione, mi permettono di ripristinare a puntino una installazione pulita dei miei computer con Linux Mint senza bisogno di creare punti di ripristino o cloni. Sperano possano essere utili anche a te a trovare spunti. Oppure, magari, te ne sarei estremamente grato, per suggerirmi accorgimenti per migliorare i miei!
Ottimo tutorial.
Io utilizzo due metodi, a seconda del tipo di macchina e dell’utilizzo:
1) rsync da linea di comando per salvare la home quasi per intero e poi recupero quello che mi serve;
2) partizione home separata che non riscrivo mai (e ogni tanto faccio delle “pulizie mirate”).
Ma l’idea di avere un backup del minimo indispensabile per ogni software utilizzato (principalmente le impostazioni) è ottima. Sarebbe bello se tutti salvassero le impostazioni nel solito posto (.etc in home, ad esempio).
Grazie Dario, sempre ottimi video/articoli.
@leonardinux
In effetti rsync è una potenza. Lo uso sistematicamente per i miei backup manuali di dati tramite Grsync e anche io salvo la home con alcuni –include e –exclude. Poi nel canale qualcuno mi dice “ma non sarebbe più facile fare un clone o uno snapshot con Timeshift? Senza dubbio, ma il mio metodo mi permette di passare tra versioni differenti di Mint e anche tra le Ubuntu based e LMDE. Grazie per gli apprezzamenti che gradisco! Ciao