Linux - Quali directory dovrei escludere quando eseguo il backup di un server?


37

Sto eseguendo il backup di un server Linux e lo sto archiviando su un altro server.

Ho iniziato con un semplice

rsync -aPh --del server.example.com:/ /mnt/backup

Quindi qualcuno ha sottolineato che non dovrei eseguire il backup /proc, poiché non si desidera ripristinare il /procserver di un altro.

C'è qualcos'altro che dovrei / non dovrei includere?

Ad esempio, che dire /sys?

Risposte:


24

Questo dipende davvero da come ripristinerai il tuo sistema. Se ricostruirai, avrai solo bisogno dei file di configurazione / dati per i tuoi servizi (es: / etc, / opt, / var, / home)

Se stai cercando un ripristino completo del sistema, puoi omettere / proc, / boot & / dev. Quindi è possibile installare il sistema operativo minimo dal supporto di avvio e quindi ripristinare il sistema tramite il backup.

Naturalmente, il backup migliore è quello che è stato testato e verificato .

Quindi ometti ciò che non ritieni necessario, prova a ripristinare in una macchina virtuale e verifica di poter ripristinare il sistema utilizzando questi dati.


5
Non omettere del /boottutto - potresti dover confrontare la vecchia configurazione di avvio con la nuova configurazione di avvio. Assicurati di non ripristinare /boot tranne manualmente.
Quack Quixote,

5
Ed escludi anche / sys ... E per ripristinare il bare metal, è meglio escludere anche /etc/udev/rules.d/.
Wazoox,

2
anche perso + trovato che per il file system, / mnt e / media non copiare alcun dispositivo montato
blade

29

Entrambi /proce /syssono filesystem virtuali che riflettono lo stato del sistema e consentono di modificare diversi parametri di runtime (e talvolta fanno cose più pericolose, come scrivere direttamente in memoria o su un dispositivo). Non dovresti mai eseguire il backup o ripristinarli.

Nella maggior parte delle distribuzioni moderne, /devviene creato dinamicamente all'avvio (è un file system di memoria riempito da udeve amici). Non ha senso eseguirne il backup e tentare di ripristinarlo è inutile. Tuttavia, se la tua distribuzione è configurata per usare un statico /dev, questo non si applica (controlla /proc/mounts, se /devè un tmpfsfile system di memoria).

Esistono altri file system di cui non è necessario eseguire il backup; usbfs(di solito a /proc/bus/usb, se montato a tutti), debugfs(dovrebbe essere in /sys/kernel/debugcaso di montaggio a tutti, ma alcune persone metterlo da qualche altra parte, probabilmente non si dispone di questo), devpts(montata /dev/pts), altri tmpfscasi (spesso si trovano a /dev/shm, /var/run, /var/locke in altri luoghi; il backup e il ripristino di essi dovrebbero essere innocui ma inutili, poiché i loro contenuti vengono persi allo spegnimento) e qualsiasi file system remoto o directory magica di automounter (tentando di eseguirne il backup o il ripristino potrebbe finire in un disastro, come si potrebbe finire per eseguire il backup / ripristino su un'altra macchina ). Dovresti anche stare attento con /mediae/mnt, poiché potrebbero essere trovati lì dispositivi esterni (come un CD dimenticato nell'unità), ma potresti anche averli usati apposta per montare qualcosa di cui è necessario eseguire il backup.

Da notare che, a parte per lo più innocui tmpfscasi, i file system di rete / automounter, e supporti rimovibili, i file system non si deve eseguire il backup sono tutti discendenti di /dev, /proco /sys. Se non si hanno i file system di rete (o automounter), e senza supporti rimovibili, escluso /sysed /proce il riavvio dopo un ripristino (per pulire le tmpfsistanze) dovrebbe essere sufficiente.



8

Alcuni file speciali in / proc e / sys confondono rsync. In genere, non si desidera eseguire il backup dei filesystem di rete montati. Anche i file sparsi possono causare problemi.

Aggiungi -x per limitarlo a un file system. Ciò evita tutti i file system di rete e / proc ecc. Tuttavia, è quindi necessario eseguire un rsync per ciascun file system che è stato montato.

Aggiungi -S per gestire i file sparsi in modo ragionevole.


4

/ boot, / dev e / proc sono abbastanza inutili per il backup, anche se, se sai cosa stai facendo, puoi eseguire il backup / avvio.

Inoltre non farei il backup / lib, / media, / mnt, / sbin, / bin, / srv, / sys o / tmp.

/ usr è facoltativo, a seconda che tu abbia qualcosa in / usr degno di backup. Se fossi in te, mi preoccuperei di più di eseguire il backup dei $ HOME dell'utente, / var e / etc (per i file di configurazione).

Anche in questo caso, tutto dipende dal tipo di backup che si desidera eseguire. Questo è un web server? Questo è un personal computer? È un server shell con tonnellate di directory in / home?


Vorrei ripristinare usando la clonazione del backup su una nuova macchina
Rory

Cosa intendi con "clonazione"? Puoi sempre fare il backup delle partizioni grezze usando dd e sfdisk sfdisk -d> partition_table.part dd if = / dev / sda1 di = dev.sda1.img (fallo per ogni partizione) quindi, sul tuo nuovo sistema: sfdisk / dev / sda <partition_table.part dd if = dev.sda1.img di = / dev / sda1 (per ogni partizione, di nuovo)
Michael Pobega,

Dal momento che al sistema dei commenti non piacciono i tag di codice, ho pubblicato un'altra risposta.
Michael Pobega,

@MichaelPobega Se esegui il backup di partizioni non elaborate come stai dicendo, dovresti copiare l'intera dimensione del disco. Perché copiare 512 GB quando hai usato solo 80 GB del tuo disco? Con rsyncte non solo copi solo ciò che hai usato, ma abiliti anche la sincronizzazione futura, in modo da poter eseguire in modo sicuro un processo cron per esso.
Max

Tornando a questo anni dopo, la mia decennale esperienza mi ha insegnato che hai ragione @ Max.
Michael Pobega,

3

È possibile ottenere un backup totale usando sfdisk e dd.


Per eseguire il backup dello schema di partizione di ciascun disco rigido, utilizzare sfdisk in questo modo:

sfdisk -d /dev/sda  > parttable_sda.part

Per eseguire il backup di ogni partizione è possibile utilizzare dd, in questo modo:

dd if=/dev/sda1 of=devsda1.img

Dove /dev/sda1è smontato, ad esempio con un avvio da CD live.

(tieni presente che avrai bisogno di molto spazio libero per scrivere questo file; quindi potresti voler scriverlo su un supporto esterno) Fallo per ogni partizione, uno alla volta, e fai il backup di tutto.


Quindi, per ripristinare su un altro computer puoi fare:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition

3
ATTENZIONE: eseguire questa operazione solo se la partizione è smontata o montata in sola lettura. Il dump del contenuto non elaborato di una partizione mentre viene scritto può finire con un filesystem gravemente incoerente sul backup (perché i blocchi vicino all'inizio del filesystem vengono copiati "prima" dei blocchi vicino alla fine, e gli algoritmi del filesystem non lo fanno aspettatevi questo; potete evitare questo problema se in qualche modo potete fare un'istantanea atomica del filesystem). fsck non ti aiuterà, poiché i suoi algoritmi dipendono anche dall'ordine in cui il filesystem scrive sul disco.
CesarB,

dd è la strada da percorrere. Avvio su un LiveCD, ovviamente. Ed è importante dd if=/dev/urandom of=/dev/sdb bs=512 count=12cancellare l'MBR e la tabella delle partizioni dell'unità di destinazione.
SDsolar,

2

Invece di escludere, di solito eseguo il backup solo di ciò che voglio. Tra cui: /home /etc /var(tranne /var/log)


1

Fondamentalmente, non è necessario eseguire il backup di pseudo-filesystem (/ proc, / sys, / dev / shm ...).


1

Come sottolineato da questa grande comunità:

/ dev / proc / sys / tmp / run / media / lost + found / boot (/ boot è opzionale vedi altri commenti)

Per riferimento il mio comando rsync finale (sotto Arch con supporto esterno montato in '/ run / media / fred / INTENSO /' e il backup in una cartella chiamata 'fred') è:

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / lost + found --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / fred / INTENSO / fred /.

(i file esclusi possono anche essere specificati con parentesi graffe (--exclude = {/ dev, / proc}) sotto Bash o con un file di testo (--exclude-from = 'excude.txt')).

-P: mostra avanzamento -a: modalità archivio -z: comprime durante il trasferimento -h: stampa i numeri in un formato leggibile dall'uomo -m: elimina le directory vuote -x: limita a un file system -v: verbose


1

Sono su una macchina Ubuntu 18.04 e li ho esclusi:

/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile

Inoltre, in particolare per la mia configurazione, escludo questi:

/home            <-- Backed up separately
/backup          <-- Mount point for backup disks
/data            <-- Mount point for data disks, which are backed up off-site
/scratch         <-- Mount point for volatile fast SSD scratch disk

0

In genere ho l'abitudine di eseguire il backup di tutto su un sistema, anche il materiale che conosco per certo è inutile per eseguire il backup. È più semplice da configurare e puoi essere sicuro al 100% che otterrai tutto ciò di cui hai bisogno incluso nel backup.


1
Sì, ma la domanda di follow-up è: cosa rimuovi dal backup come non necessario?
Rory,

A cui risponderei: "niente".
Maximus Minimus,

Vero. Lo si esclude dal processo di ripristino, non dal backup stesso. Ma probabilmente vuoi ancora lasciarti fuori /proce /devper non confondere il povero piccolo rsync.
TJ Crowder,

1
@mh, ripristineresti / proc / kcore, qual è la memoria del server originale? sembra un po 'sciocco ...
Rory,

0

Sto usando una Ubuntu Linux come server di test per lo sviluppo di siti Web e per l'hosting di una documentazione wiki. Ogni notte un crontab scarica il database MySQL in / var / www, e quindi tutto / var / www viene compresso e replicato sul server di backup. Non è l'ideale, ma è abbastanza. Ho dovuto ricostruire il server a un certo punto e tutto ciò che mi mancava davvero erano i file di configurazione di Apache e Samba.


0

Suppongo che tu non abbia Linux su una macchina virtuale. Se possibile, esorto a considerare di passare alla virtualizzazione. I backup a livello di VM sono un livello completamente nuovo di coerenza e facilità d'uso. Esistono strumenti di virtualizzazione gratuiti, quindi non devi necessariamente investire in VmWare o altri costosi strumenti mostruosi.


0

Domanda: quali directory dovrei escludere quando eseguo il backup di un server?

Ecco uno script che uso spesso, da un laptop Ubuntu 16.04 LTS a un server Ubuntu 16.04 LTS. Mostra chiaramente quali directory dovrebbero essere saltate mentre si esegue un backup completo:

echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
sudo rm -f /var/tmp/* >/dev/null 2>&1
sudo rm -f /var/log/*.gz >/dev/null 2>&1
sudo rm -f /var/log/kern* >/dev/null 2>&1
sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo "      BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time sudo rsync -aAXv \
          / \
          --bwlimit=500 \
          --delete \
          --delete-excluded \
          --ignore-errors \
          --exclude="/dev/*" \
          --exclude="/proc/*" \
          --exclude="/sys/*" \
          --exclude="/tmp/*" \
          --exclude="/run/*" \
          --exclude="/mnt/*" \
          --exclude="/media/*" \
          --exclude="/lost+found" \
          abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h

Nota l'esclusione di /mnt- che è dove ogni sistema Ubuntu ha un'unità di backup a tempo pieno montata per gli rsyncauto-backup basati su cron 4 volte al giorno. Queste unità sono montate da voci in fstabe sono sempre presenti. Includerli in un backup su un altro sistema sarebbe duplicativo.

Allo stesso modo, /mediaè dove vengono montate le unità USB. Viene eseguito il backup separatamente.

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.