Vogliamo fare un backup di tutto sul nostro server Debian, che è in esecuzione in remoto dall'altra parte del mondo (ospitato da Linode), senza spegnerlo.
Questo sistema esegue shell, e-mail, XMPP / prosody e web, con un paio di semplici configurazioni nginx.
Vogliamo eseguire il backup dei file relativi a queste cose solo per sicurezza. Ad esempio, i file che gli utenti hanno archiviato nelle loro home directory.
Non è necessario copiare esattamente il programma di installazione esistente in ogni singolo file / etc; invece, il motivo per cui stiamo anche eseguendo il backup in primo luogo è che possiamo spostare tutto in una nuova installazione (la versione più recente di Debian è ancora su Linode).
Vedo che Linode offre un servizio di backup. Ma a lungo termine abbiamo anche bisogno dei nostri backup, qui, nel caso in cui vadano sotto o succede qualcosa di strano.
Il motivo per cui esiste questa domanda è che quando ho provato a fare backup in passato ho continuato a commettere uno di questi due errori:
- Sono andato "OK, copierò
/
tutto e tutto sotto di esso" e poi mi sono bloccato in uno strano ciclo infinito o perché l'unità su cui stavo copiando era montata su / media / backup e si stava copiando ricorsivamente [obv quel problema specifico non applicabile qui dal momento che faremo il backup su rsync o simili] o si è bloccato nel tentativo di copiare alcune cose "vive" in / proc o / var o altro, come cercare di tenere il passo con i registri in continua evoluzione, o - Sono andato "OK, prenderò solo il minimo di ciò di cui abbiamo bisogno ... hmm, le directory home di tutti e le nostre directory dei server web (tutte sotto
/var
) e prendiamo una copia di/etc
tutte le vecchie mail in / var / vmail "e poi invariabilmente ho rovinato i permessi dei file o i timestamp (assicurandomi di non eseguire il backup dei file unix su un disco FAT questa volta) o ho dimenticato qualcosa (" oh, spara, avevo alcuni script personalizzati in / usr / local / bin che non ho mai archiviato altrove, ho dimenticato di prenderli, suppongo che ora non ci siano più ").
Quindi la copia obv dell'intero disco in verticale ha portato a insidie e la copia selettiva delle directory ha portato a insidie. Voglio sapere come farlo nel modo giusto.
La domanda di errore del server Cosa è necessario per un sistema di backup completo? copre la filosofia e le buone pratiche, ma sto cercando questi dettagli più specifici di:
- Quali directory devo copiare e quali escludo (dato che si tratta di un sistema attualmente in esecuzione e che fornisce wiki, chat XMPP, e-mail - con nuovi messaggi in arrivo mentre il processo di copia è in esecuzione)
- Quali attributi di file quali timestamp, proprietario e gruppo devo presentare e come posso farlo? ← Penso di poter rispondere da solo a questa metà della domanda con qualcosa come ... um ...
rsync -HXaz
Penso che sia una buona opzione per noi? L'-z
obv non è in realtà correlato alla domanda che è "cosa conservo"
Molti dei consigli di backup che vedo, come l'utilizzo dd
, sembrano presupporre che l'unità sia smontata e non in uso. Ma non mi è dovuto escludere "vivente" directory come / proc e alcune delle sottodirectory / var (tuttavia, alcune delle cose in / var so che sicuramente facciamo necessità di mantenere) e / montaggio? Cos'altro devo pensare in questa situazione? Quindi immagino di poterlo snarf con rsync e usando un mucchio di --exclude
bandiere.
O ci sono idee migliori, specialmente quelle amichevoli FOSS?
cp -r -a
manterrà il maggior numero possibile di attributi di file durante la copia dei file (in base a ciò che supporta il filesystem di destinazione). Il -a
flag indica cp
di conservare gli attributi. Per la copia su una rete o tramite un filesystem che non supporta gli attributi richiesti, tar -c
ha sempre funzionato per me, anche se credo che ci siano alcuni casi limite che non copre e in particolare credo che tar
dipenda per impostazione predefinita dai nomi utente corrispondenti su entrambi i sistemi. Detto questo, ho copiato un intero sistema Linux (non montato) usando tar
senza problemi apparenti.