Linux - Quels répertoires dois-je exclure lors de la sauvegarde d'un serveur?

37

Je sauvegarde un serveur Linux et le stocke sur un autre serveur.

J'ai commencé avec un simple

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

Ensuite, quelqu'un a fait remarquer que je ne devais pas sauvegarder /proc, car vous ne voulez pas restaurer le /procserveur d'un serveur sur un autre.

Y a-t-il autre chose que je devrais / ne devrais pas inclure?

Par exemple, qu'en est-il /sys?

Rory
la source

Réponses:

24

Cela dépend vraiment de la façon dont vous allez restaurer votre système. Si vous reconstruisez, vous n’avez besoin que des fichiers de configuration / données pour vos services (par exemple: / etc, / opt, / var, / home)

Si vous souhaitez effectuer une restauration complète du système, vous pouvez omettre / proc, / boot & / dev. Vous pouvez ensuite installer le système d'exploitation minimum à partir de votre support de démarrage, puis restaurer votre système via votre sauvegarde.

Bien entendu, la meilleure sauvegarde est celle qui a été testée et vérifiée .

Donc, omettez ce dont vous ne pensez pas avoir besoin, essayez de restaurer dans une machine virtuelle et vérifiez que vous pouvez récupérer votre système en utilisant ces données.

Wayne
la source
5
N'omettez pas /boottout à fait - vous devrez peut-être comparer l'ancienne configuration de démarrage avec la nouvelle configuration de démarrage. Veillez simplement à ne pas restaurer /boot sauf manuellement.
Quack Quotote
5
Et excluez / sys également ... Et pour restaurer le métal nu, vous devriez également exclure /etc/udev/rules.d/.
Wazoox
2
également perdu + trouvé lequel, pour le système de fichiers, / mnt et / media de ne copier aucun périphérique monté
lame
29

Les deux /procet /syssont systèmes de fichiers virtuels qui reflètent l'état du système, et vous permettent de modifier plusieurs paramètres d'exécution (et parfois faire des choses plus dangereuses, comme écrire directement à la mémoire ou à un appareil). Vous ne devriez jamais les sauvegarder ou les restaurer.

Dans la plupart des distributions modernes, il /devest créé dynamiquement au démarrage (il s’agit d’un système de fichiers mémoire rempli par udevet ses amis). Il ne sert à rien de le sauvegarder, et tenter de le restaurer est futile. Cependant, si votre distribution est configurée pour utiliser un statique /dev, cela ne s'applique pas (cochez /proc/mounts, s'il /devs'agit d'un tmpfssystème de fichiers en mémoire).

Il y a d'autres systèmes de fichiers que vous ne devriez pas sauvegarder; usbfs(habituellement à /proc/bus/usb, si elle est montée du tout), debugfs(censé être au /sys/kernel/debugcas monté du tout, mais certaines personnes le mettre quelque part ailleurs, vous ne probablement pas celui - ci), devpts(monté à /dev/pts), d' autres tmpfsinstances (souvent à /dev/shm, /var/run, /var/lockLes sauvegarder et les restaurer devraient être inoffensifs mais inutiles, car leur contenu est perdu à l’arrêt), et tout système de fichiers distant ou tout répertoire magique d’auto-monteurs (toute tentative de sauvegarde ou de restauration risque d’être catastrophique, sauvegarder / restaurer sur une autre machine ). Vous devriez aussi faire attention avec /mediaet/mntVous pouvez y trouver des périphériques externes (tels que des CD oubliés dans le lecteur), mais vous les avez peut-être aussi utilisés exprès pour monter quelque chose qui devrait être sauvegardé.

Notez que, autres que la plupart du temps inoffensifs tmpfscas, les systèmes de fichiers réseau / monteurs automatiques et les supports amovibles, les systèmes de fichiers que vous ne devriez pas sauvegarder sont tous les descendants de /dev, /procou /sys. Si vous n'avez pas de réseau (systèmes de fichiers ou), et monteurs automatiques de support amovible, à l' exclusion /syset /procet le redémarrage après une restauration (pour essuyer les tmpfsinstances) devrait être suffisant.

CesarB
la source
8

Certains des fichiers spéciaux dans / proc et / sys confondent rsync. Vous ne voulez généralement pas sauvegarder non plus les systèmes de fichiers montés sur le réseau. Les fichiers fragmentés peuvent également causer des problèmes.

Ajoutez -x pour le limiter à un système de fichiers. Cela évite tous les systèmes de fichiers réseau et / proc, etc. Cependant, vous devez ensuite exécuter un rsync pour chaque système de fichiers que vous avez monté.

Ajoutez -S pour gérer judicieusement les fichiers fragmentés.

pjc50
la source
4

Les sauvegardes de / boot, / dev et / proc sont plutôt inutiles - cependant, si vous savez ce que vous faites, vous pouvez sauvegarder / boot.

Je ne voudrais pas non plus sauvegarder / lib, / media, / mnt, / sbin, / bin, / srv, / sys ou / tmp.

/ usr est facultatif, selon que vous avez ou non quelque chose à sauvegarder dans / usr. Si j’étais vous, je me soucierais surtout de la sauvegarde des $ HOMEs, / var et / etc (pour les fichiers de configuration) des utilisateurs.

Encore une fois, tout dépend du type de sauvegarde que vous souhaitez effectuer. Est-ce un serveur web? Est-ce un ordinateur personnel? Est-ce un serveur shell avec des tonnes de répertoires sous / home?

Michael Pobega
la source
Je voudrais restaurer en utilisant le clonage de la sauvegarde sur une nouvelle machine
Rory
Qu'entendez-vous par "clonage"? Vous pouvez toujours simplement sauvegarder les partitions brutes en utilisant dd et sfdisk sfdisk -d> partition_table.part dd if = / dev / sda1 de = dev.sda1.img (faites cela pour chaque partition) puis, sur votre nouveau système: sfdisk / dev / sda <partition_table.part dd si = dev.sda1.img de = / dev / sda1 (pour chaque partition, encore)
Michael Pobega
Comme le système de commentaires n'aime pas les balises de code, j'ai posté une autre réponse.
Michael Pobega
@MichaelPobega Si vous sauvegardez des partitions brutes comme vous le dites, vous devrez copier toute la taille du disque. Pourquoi copier 512 Go alors que vous n’avez utilisé que 80 Go de votre disque? Avec rsyncvous, copiez non seulement ce que vous avez utilisé, mais activez également la synchronisation, pour pouvoir exécuter en toute sécurité un travail cron.
Max
En revenant à ces années plus tard, ma décennie d'expérience m'a appris que vous avez raison @Max.
Michael Pobega
3

Vous pouvez réaliser une sauvegarde totale en utilisant sfdisk et dd.


Pour sauvegarder le schéma de partition de chaque disque dur, utilisez sfdisk comme ceci:

sfdisk -d /dev/sda  > parttable_sda.part

Pour sauvegarder chaque partition, vous pouvez utiliser dd, comme ceci:

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

/dev/sda1est démonté, par exemple avec un démarrage en direct-CD.

(N'oubliez pas que vous aurez besoin de beaucoup d'espace libre pour écrire ce fichier; vous voudrez peut-être l'écrire sur un support externe) Faites cela pour chaque partition, une par une, et sauvegardez tout.


Ensuite, pour restaurer sur un autre ordinateur, vous pouvez faire:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition
Michael Pobega
la source
3
AVERTISSEMENT: faites ceci uniquement si la partition est démontée ou montée en lecture seule. Le vidage du contenu brut d’une partition en cours d’écriture peut aboutir à un système de fichiers très incohérent sur la sauvegarde (car les blocs situés au début du système de fichiers sont copiés "plus tôt" que les blocs proches de la fin, et les algorithmes du système de fichiers ne le sont pas. Attendez-vous à cela, vous pouvez éviter ce problème si vous pouvez en quelque sorte faire une capture instantanée atomique du système de fichiers). fsck ne vous aidera pas, car ses algorithmes dépendent également de l'ordre écrit par le système de fichiers sur le disque.
CesarB
dd est la voie à suivre. Démarrez sur un LiveCD, bien sûr. Et il est important d' dd if=/dev/urandom of=/dev/sdb bs=512 count=12effacer le MBR et la table de partition du lecteur cible.
SDsolar
2

Au lieu d'exclure, je ne sauvegarde généralement que ce que je veux. Y compris: /home /etc /var(sauf /var/log)

DennyHalim.com
la source
1

Fondamentalement, les pseudo-systèmes de fichiers (/ proc, / sys, / dev / shm ...) n'ont pas besoin d'être sauvegardés.

sendmoreinfo
la source
1

Comme l'a souligné cette grande communauté:

/ dev / proc / sys / tmp / run / media / lost + found / boot (/ boot est facultatif, voir les autres commentaires)

Pour référence, ma dernière commande rsync (sous Arch avec un support externe monté dans '/ run / media / fred / INTENSO /' et sauvegardée dans un dossier nommé 'fred') est la suivante:

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

(Les fichiers exclus peuvent également être spécifiés avec des accolades (--exclude = {/ dev, / proc}) sous Bash ou avec un fichier texte (--exclude-from = 'excude.txt')).

-P: affiche la progression -a: mode d'archivage -z: compresse pendant le transfert -h: affiche les nombres dans un format lisible par l'homme -m: élimine les répertoires vides -x: limite à un système de fichiers -v: verbose

Fred Christophe
la source
1

Je suis sur une machine Ubuntu 18.04 et j'ai ces exclus:

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

En outre, spécifiquement pour ma configuration, j'exclus ces:

/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
utilisateur2724383
la source
0

Je fais généralement une habitude de sauvegarder tout sur un système, même les choses que je sais que pour certains est inutile de sauvegarder. C'est plus simple à configurer et vous pouvez être sûr à 100% que tout ce dont vous avez besoin est inclus dans la sauvegarde.

Maximus Minimus
la source
1
oui, mais la question suivante est: qu'est-ce que vous supprimez de votre sauvegarde comme inutile?
Rory
A quoi je répondrais: "rien".
Maximus Minimus
Vrai. Vous l'excluez du processus de restauration, pas de la sauvegarde elle-même. Mais vous voulez probablement toujours laisser de côté /procet /devne pas confondre pauvre petit rsync.
TJ Crowder
1
@mh, vous restaureriez / proc / kcore, qui est la mémoire du serveur d'origine? cela semble un peu idiot ...
Rory
0

J'utilise une machine Linux Ubuntu comme serveur de test pour le développement de sites Web et pour l'hébergement d'un wiki de documentation. Chaque nuit, une crontab vide la base de données MySQL dans / var / www, puis tout / var / www est compressé et répliqué sur le serveur de sauvegarde. Ce n'est pas idéal, mais c'est suffisant. J'ai dû reconstruire le serveur à un moment donné, et tout ce qui m'a vraiment manqué, ce sont les fichiers de configuration Apache et Samba.

Nic
la source
0

Je suppose que vous n'avez pas Linux sur une machine virtuelle. Si possible, je vous conseille vivement de passer à la virtualisation. Les sauvegardes au niveau vm représentent un tout nouveau niveau de cohérence et de facilité d'utilisation. Il existe des outils de virtualisation gratuits, vous n'avez donc pas besoin d'investir dans VmWare ou dans d'autres outils monstres coûteux.

Gnudiff
la source
0

Question: Quels répertoires dois-je exclure lors de la sauvegarde d'un serveur?

Voici un script que j'utilise souvent, d'un ordinateur portable Ubuntu 16.04 LTS à un serveur Ubuntu 16.04 LTS. Il indique clairement quels répertoires doivent être ignorés lors d’une sauvegarde complète:

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

Notez l'exclusion de /mnt- où chaque système Ubuntu a un lecteur de sauvegarde permanent monté pour rsyncles sauvegardes automatiques cron 4 fois par jour. Ces lecteurs sont montés par des entrées fstabet sont toujours présents. Les inclure dans une sauvegarde sur un autre système serait une duplication.

De même, /mediac'est là que les lecteurs USB sont montés. Ils sont sauvegardés séparément.

SDsolar
la source