2010-04-04 11 views
14

Voglio utilizzare Git per eseguire il backup del mio disco di casa, ma voglio anche usarlo come sistema di controllo della versione per i progetti che verranno memorizzati nella mia unità di casa.Git come sistema di backup e controllo versione

Come potrei fare per farlo? Devo .gitignore tutte le cartelle radice dei progetti e creare nuovi repository per loro?

Edit:

Ok ho spiegato quello che volevo a torto. Voglio avere una cronologia delle modifiche apportate al mio disco di casa come posso ottenere con Git e voglio anche confermarlo.

+2

Questo non è ciò che Git è per, è un sistema di controllo della versione. –

+2

L'uso di git per eseguire il backup di un'unità è un enorme overkill. – rogeriopvl

+0

@rogeriopvl - no. non è eccessivo ... il che implicherebbe qualcos'altro ... come usare git per controllare la versione di uno script di tre righe. git: non è solo lo strumento per il lavoro. git non è un sistema di backup. – Rook

risposta

0

Questo legge praticamente come quello che sto facendo. Ho un repository git nella mia home directory, ma lo uso per tenere traccia solo dei file di configurazione che posso modificare a mano. (Questo esclude i file di stato mantenuti da ambienti desktop "moderni" e quasi tutto ciò che è memorizzato come XML.) Tutto il resto va in .gitignore. C'era una volta, ho deciso che la mia directory "notes" e il mio ~/.emacs.d dovevano entrare nei loro repository, così ho creato repository git in quelle directory e ho fatto in modo che il repository principale li ignorasse.

Non utilizzo questa configurazione a scopo di backup ma per sincronizzare i file tracciati tra account su macchine diverse, ma suppongo che questo potrebbe funzionare anche per i backup.

+0

Bene, è possibile, ma per scopi di sincronizzazione/backup rsync funzionerà molto meglio. –

+2

No. rsync non ha alcuna soluzione ragionevole per me se modifico lo stesso file su due account diversi. (unisono che usa l'algoritmo di rsync, ma fallisce in altri problemi.) Almeno, git può rilevare e unire modifiche in conflitto. rsync non ha nemmeno una risposta alla domanda "che aspetto aveva X file 14 giorni fa?" – hillu

13

Utilizzare rsync per il backup. Utilizzare git per il controllo della versione.

+1

@mk Spiegare perché sarebbe utile. Perché non dovresti usare 'git clone' e 'git pull' per sincronizzare/fare il backup? – Igor

14

I wrote a blog post about this un po 'indietro:

sistemi di controllo versione, con la possibile l'eccezione di SourceSafe è ottima per tenere traccia del codice. Perché? Perché erano progettati per tenere traccia del codice.

Purtroppo, però, le caratteristiche di un buon VCS sono completamente diverso - e spesso esattamente il contrario - delle caratteristiche che rendono un buon sistema di backup.

Prendere, ad esempio, la proprietà di file . Giustamente, un buon VCS, ignora la proprietà del file: quando controllo il codice di qualcun altro, dovrei essere il proprietario di quei file - non è stato originariamente creato da uid. D'altra parte, un buon sistema di backup farà tutto ciò che è in suo potere per preservare la proprietà del file: quando eseguo il ripristino dai miei backup, voglio che/etc/shaddow sia di proprietà di root e/home/wolever/di proprietà da Wolever.

MA, se si vuole veramente, controlla bup - per quanto posso dire, lo fa di backup con git "giusto".

+1

Aggiungi alcuni frammenti dell'articolo per impedire [link rot] (http://meta.stackexchange.com/questions/140772/link-rot-encourage-author-to-cache-snippets-of-relevant-text -to-prepara-per-Thi). –

+1

Ah, grazie. Ho aggiunto un estratto. –

+0

bup ha un bell'aspetto tranne che sembra anche molto sottosviluppato:/ – Andrew

0

Su windows git-extensions e gitGui consentono di clonare un repository, che consente di eseguire un backup senza tutti i file in .gitignore.

Avanti 7zip e il gioco è fatto!

3

ho trovato il backintime-gnome (radura/python, backend separata?) Per essere buono per i backup incrementali pianificati, che funziona per il vostro quotidiano, settimanale, mensile, ecc .. poi pronti contro termine Git per i file di origine o di altro cambiamento - i dati critici lo avvolgerebbero bene. Non ho giocato con i comandi backend comuni alla bachintime, ma sembrano tutti pitoni.

Lo sto usando in Ubuntu, "Ricorda che Back In Time è solo una GUI. La vera magia è fatta da rsync (scatta istantanee e ripristina), diff (controlla se qualcosa è cambiato) e cp (make hardlinks)." -http: //backintime.le-web.org/documentation/

1

Ci sono alcuni progetti che mirano a risolvere il problema:

BUP sembra aver fatto i maggiori progressi: https://github.com/apenwarr/bup

Ma potresti anche voler cercare gibak o coldstorage.

+0

Sto cercando un nuovo strumento di backup per alcune settimane. Questo progetto (bup) sembra buono. – guettli

Problemi correlati