Mantenere i file di configurazione sincronizzati su più PC


15

Ho alcune macchine Linux diverse e molti file di configurazione (e cartelle) su ciascuno.

Per esempio:

~/.ssh/config
~/.config/openbox/rc.xml
~/.config/openbox/autostart.sh
~/.scripts/ ( folder )
~/.bashrc
...etc

Esiste un metodo semplice ed elegante per mantenere sincronizzati questi file tra i miei computer (uno non ha accesso a Internet) ?

Inoltre, alcuni file avranno bisogno di un processo di sincronizzazione più avanzato, poiché dovranno differire leggermente ... ad esempio:

La mia tastiera desktop ha una gamma di tasti di scelta rapida, in cui il mio laptop non ha quasi nessuno. Uso XF86Mailopen thunderbird sul mio desktop, ma Meta+ Msul mio laptop.

My Home Desktop e Work Desktop sono entrambi più orientati agli "utenti multipli", dove il mio laptop è solo per me. Quindi sul mio laptop, tendo a mantenere il file 'rc.xml' per openbox su /etc/xdg/openbox/rc.xmlma sui desktop su~/.config/openbox/rc.xml

Risposte:


10

Mantieni i file sotto controllo della versione. Ciò ha molteplici vantaggi, tra cui la facilità di mantenere sincronizzati i file (commit su un computer, aggiornamento sugli altri) e mantenere una cronologia delle modifiche (in modo da poter facilmente scoprire cosa ha rotto un programma che ha funzionato il mese scorso).

Uso CVS e sincronizzo i repository con Unison o Sneakernet, ma è perché lo faccio da tempo prima del controllo della versione distribuita ampiamente disponibile. Chiunque inizi ora dovrebbe usare un adeguato strumento di controllo della versione distribuita , come bazar, darc, git, mercurial, ...

Gestire i file che devono differire tra macchine è sempre un po 'problematico. Se la lingua di configurazione consente i condizionali, utilizzali. Altrimenti, se esiste un meccanismo di inclusione, utilizzarlo per dividere il file di configurazione in una parte dipendente dalla macchina e una parte condivisa. Conservare tutte le parti dipendenti dalla macchina in una directory separata (qualcosa del genere ~/.local/NAME/) a cui si fa sempre riferimento tramite un collegamento simbolico ( ~/.here-> local/NAMEsu ciascuna macchina). Ho alcuni file che sono generati da uno script nella parte condivisa dai parametri mantenuti nella parte specifica della macchina; ciò preclude la modifica indiretta di questi file tramite un'interfaccia di configurazione della GUI. Evita di configurare le cose /etc, è più difficile sincronizzare tra le macchine.


Uso gitper questo scopo. il mio repository per ~/.etcho anche un ~/.usre un ~/.varvorrei che queste directory fossero standard in modo che KDE smettesse di lanciare tutti i file tmp / var / config / etc in .kde. così difficile sapere dove si trova nella mia directory home.
xenoterracide,

5

Concordo con la risposta sul controllo della versione , ma un altro metodo con cui ho sperimentato di recente è Dropbox . È essenzialmente un sistema di controllo della versione che si sincronizza automaticamente tra tutte le tue macchine, quindi se modifichi un file su un computer vedrai le modifiche riflesse sugli altri tuoi computer in un paio di secondi, senza la necessità di impegnarti sul primo e aggiornarlo sul quest'ultimo.

Il loro piano di base gratuito è di 2 GB, quindi lo uso per eseguire la versione dei miei file di configurazione e dei registri delle chat


il vantaggio principale che vedo qui è che è molto più facile da configurare.
Ashesh Kumar Singh,

3

Puppet e Cfengine sono due buoni strumenti per sincronizzare i file (e molto altro ..)


C'è anche uno chef, ma questi strumenti sono davvero per la gestione di un gran numero di macchine, probabilmente eccessive per 2 o 3 sistemi
xenoterracide

1

Oggi, si potrebbe ottenere il meglio delle risposte prima (dvcs) e seconda (dropbox) con sparkleshare , che offre un'esperienza utente simile a dropbox con archiviazione basata su git dietro le quinte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.