GNU/Linux >> Linux Esercitazione >  >> Linux

È tutto nel file punto - YADM e Homeshick

I backup sono importanti. I backup sono fondamentali. I backup sono amore, i backup sono vita. Nel corso degli anni ho parlato del valore cardinale di mantenere i tuoi dati al sicuro, e ciò significa più copie, più posizioni. Di recente abbiamo anche parlato di come inventare la tua configurazione rapida e sporca con tar e gpg. Quello copre sia i dati che le impostazioni dell'applicazione. A proposito di quest'ultimo...

Espandiamoci ancora un po'. Se hai più computer, reinstalli i sistemi frequentemente o semplicemente desideri avere una configurazione coerente su più host, potresti essere interessato a un modo per gestire le impostazioni dell'applicazione. In Linux, la maggior parte dei software mantiene le proprie configurazioni in file nascosti all'interno della directory home, al livello superiore (/home/nomeutente) o all'interno della sottodirectory .config. Ad ogni modo, potrebbero essercene molti, vuoi assicurarti di averne sempre una copia e, se qualcosa va storto, puoi facilmente tornare a un buon checkpoint. Presentazione di YADM e Homeshick.

Ancora un altro Dotfiles Manager (YADM)

Il nome non è stimolante, ma il programma ha una nobile missione. È progettato per aiutarti a mantenere le copie con versione dei tuoi file di configurazione, in modo da avere una configurazione flessibile e robusta. Questo concetto è diverso dal software che cerca di indovinare automaticamente le tue impostazioni:è più simile al mio manuale di una riga sopra, in quanto devi occuparti di ogni file di configurazione separatamente. Tuttavia, una configurazione fai-da-te richiede che tu conservi costantemente copie dei dati, e questo potrebbe essere ingombrante, inoltre non saprai necessariamente quale particolare backup contiene le modifiche giuste.

YADM mira a introdurre un elemento di profondità temporale utilizzando git in background. Fondamentalmente, esegui il commit delle tue configurazioni nel tuo repository e questo ti dà tutti i bit e i pezzi necessari, come la cronologia delle versioni, le differenze e simili. Va bene, vediamo come funziona.

L'inizio è stato promettente. Avevo YADM in esecuzione e sono stato in grado di aggiungere file:

roger@matrix:~$ yadm aggiungi .ssh
roger@matrix:~$ yadm aggiungi .gnupg

Tuttavia, quando ho provato a eseguire il commit dei file, YADM si è lamentato di non sapere chi fossi:

roger@matrix:~$ yadm commit

*** Per favore dimmi chi sei.

Esegui

git config --global user.email "[email protected]"
git config --global user.name "Il tuo nome"
/>
per impostare l'identità predefinita del tuo account.
Ometti --global per impostare l'identità solo in questo repository.

fatale:impossibile rilevare automaticamente l'indirizzo email (ottenuto 'roger@matrix.(none)')

Questo errore è un po' inutile. Il programma potrebbe verificare se hai identificato prima di aggiungere qualsiasi file. Inoltre, non sono sicuro di cosa accadrebbe se ti identifichi con un'e-mail o un nome errato? In che modo ciò influenzerebbe l'autenticazione in seguito? Ho deciso di non rischiare, quindi ho usato localhost per superare questa fase e poi sono stato in grado di impegnarmi.

roger@matrix:~$ git config --global user.email "[email protected]"
roger@matrix:~$ git config --global user.name "Roger Bodger"

yadm commit -m "Il test esegue il commit del primo batch"
[master (root-commit) fe99215] Il test esegue il commit del primo batch
2 file modificati, 0 inserimenti(+), 0 eliminazioni(-)
modalità di creazione 100644 .gnupg/pubring.kbx
modalità di creazione 100644 .gnupg/trustdb.gpg

Ma poi, l'ultimo passaggio mi ha sconcertato:la spinta vera e propria. Sì, so come funziona git e tutto il resto, quindi ciò significa che devi effettivamente avere un server, che esegue git, disponibile sulla tua rete (LAN o Internet o altro). In tal caso, ciò complica la configurazione e la rende anche meno flessibile, perché non è possibile mantenere file offline modulari e indipendenti.

Ho passato un po' di tempo a leggere la documentazione e ho trovato il flusso di lavoro piuttosto macchinoso. Forse mi manca qualcosa di veramente ovvio, ma credo anche nella semplicità autoesplicativa di un ottimo software. Il fatto che non stavo vivendo subito un'esperienza stellare, senza fare domande, significa che questa è una soluzione con uno schema cerebrale diverso - e quindi necessario - da estrarre.

Scusa di casa

Potresti pensare che questo sia il software di backup basato su git preferito di Sean Connery, ma lo scherzo è su di te, ah ah! È una versione di script di shell del software di sincronizzazione dei file di punti Homesick ora deprecato basato su Ruby. La natura completa di BASH di questo strumento dovrebbe semplificarne la configurazione e l'utilizzo.

Ho seguito le istruzioni e, in effetti, l'installazione è banale. Ma devi anche aggiungere l'origine dello script alla fine del tuo file .bashrc nella tua home directory, altrimenti dovrai utilizzare il percorso completo corretto per eseguire lo strumento.

Ora, Homeshick funziona combinando git con il collegamento simbolico. Fondamentalmente, qualsiasi file che aggiungi ad esso verrà quindi collegato in modo simbolico al tuo repository. Il che porta la domanda, cosa succede se vuoi "rimuovere" un file? Ad ogni modo, i repository sono in realtà chiamati castelli (quello predefinito è CASTELLO).

homeshick
homeshick usa git insieme ai collegamenti simbolici per tracciare i tuoi preziosi dotfile.

Utilizzo:homeshick [opzioni] TASK

Compiti:
homeshick cd CASTLE # Inserisci un castello
homeshick clone URI.. # Clona URI come castle for homeshick
homeshick generate CASTLE.. # Genera un repository del castello

Tuttavia, le istruzioni non sono abbastanza chiare:se esegui subito il primo comando, riceverai un errore:

homeshick cd CASTLE
bash:cd:/home/roger/.homesick/repos/CASTLE:Nessun file o directory di questo tipo

Lo script non controlla se esiste un repository, quindi non ti avviserà che devi generarne uno. Questo non è un grosso problema, ma non c'è davvero alcun motivo per cui non potrebbe esserci un'impostazione predefinita amichevole, o almeno un avviso in modo che gli utenti possano risolverlo.

homeshick genera CASTELLO
genera CASTELLO


Come iniziare ecc

elenco homeshick
CASTELLO
homeshick https://github. com/andsens/homeshick.git

Guardando l'elenco esistente di repository, c'è anche quello dell'autore. Ad ogni modo, ho continuato a usare lo script. Fondamentalmente, è un lavoro manuale. Specificare il repository e il file all'interno del quale si desidera spostare, che verrà quindi collegato tramite un collegamento simbolico nella posizione corretta, ad esempio:

homeshick traccia CASTLE ~/.profile ~/.gnupg
traccia .profile
traccia .gnupg/trustdb.gpg
traccia .gnupg/pubring.kbx

Il passaggio successivo consiste nel confermare la modifica e quindi eseguire il push in un repository, determinando la natura online di questo script, proprio come YADM. A meno che, ovviamente, non desideri utilizzare la tua configurazione del server. Non banale, e ho dovuto consultare la documentazione. Finisci per fare cd CASTLE, git commit, git push , l'intero affare. Quindi, in un certo senso, homeshick astrae un mucchio di comandi git (come rami e simili). L'ho trovato ugualmente sconcertante rispetto al mio precedente tentativo, quindi suppongo che il software sia progettato principalmente per gli sviluppatori.

C'erano anche degli errori strani. Come l'aggiornamento del repository. Che cosa fa davvero? In che modo determina che un repository locale è obsoleto se in effetti non ha upstream? Avevo anche paura che i miei file potessero in qualche modo essere sovrascritti, e cosa succede allora?

homeshick refresh
obsoleto CASTLE
obsoleto homeshick
refresh I castelli CASTLE,homeshick sono obsoleti.
tirare? [yN]

no upstream Impossibile tirare CASTLE, non ha upstream
pull homeshick

Conclusione

Il mio cervello non è sicuramente quello di uno sviluppatore di software, motivo per cui trovo che uno strumento come git non sia affatto amichevole. Sembra un software orientato alla macchina piuttosto che all'uomo, e sembra più contorto di quanto dovrebbe essere. Allo stesso modo, YADM e Homeshick non mi sembrano soluzioni ideali alla domanda di configurazione della directory home. Se ho bisogno di fare le cose manualmente e poi assegnarle a un backup (archivio), potrei anche farlo correttamente manualmente, con maggiore flessibilità e controllo.

Capisco cosa cercano di risolvere questi due strumenti e avere un'installazione completamente sincronizzata e con versione su più sistemi è una buona idea (è possibile eseguire lo script delle procedure pull e push, fare in modo che tutto funzioni senza intoppi in background), ma entrambi i programmi sono troppo nerd e dovrebbero avere una configurazione iniziale più elegante e un migliore controllo degli errori. Infine, c'è la questione della privacy. Vuoi davvero inserire file importanti in un repository online proprio come quello? Sei a tuo agio con i livelli di sicurezza, i livelli di crittografia e la tua capacità di rendere l'installazione stretta e intelligente senza stupidaggini? Quindi, per la mia ricerca originale, penso che la semplicità di rsync, tar e gpg rimangano le mie soluzioni preferite per il backup della directory home. Ma se sei un giovane idiota - e non un vecchio idiota come me - allora potrebbe piacerti. Ecco fatto.


Linux
  1. Utilizzare Setxkbmap per scambiare lo spostamento sinistro e il controllo sinistro?

  2. Output su Stdout e allo stesso tempo Grep in un file?

  3. La differenza tra collegamenti simbolici e hard?

  4. Salva tutto l'output del terminale in un file?

  5. Come trovare il tipo di un file Img e montarlo?

Come ottenere la data e l'ora correnti in Python

Come usare Sudo e il file Sudoers

Come salvare un file in Vim/Vi e uscire dall'editor

E la migliore distribuzione del 2019 è...

Recensione Plasma 5.17 - Lo spettacolo deve andare avanti (ed essere buono)

Io reindirizzamento e il comando principale?