Je sauvegarde un serveur Linux et le stocke sur un autre serveur.
J'ai commencé par un simple
rsync -aPh --del server.example.com:/ /mnt/backup
Ensuite, quelqu'un a souligné que je ne devrais pas sauvegarder /proc
, car vous ne voulez pas restaurer le /proc
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 de /sys
?
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 recherchez une restauration complète du système, vous pouvez omettre/proc,/boot &/dev. Ensuite, vous pouvez installer le système d'exploitation minimum à partir de votre support de démarrage, puis restaurer votre système via votre sauvegarde.
Bien sûr, la meilleure sauvegarde est celle qui a été testée et vérifiée.
Oubliez donc ce dont vous ne pensez pas avoir besoin, essayez de restaurer dans un VM et vérifiez que vous pouvez récupérer votre système en utilisant ces données.
/proc
Et /sys
Sont des 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 de faire des choses plus dangereuses, comme écrire directement dans la mémoire ou dans un dispositif). Vous ne devez jamais les sauvegarder ou les restaurer.
Dans la plupart des distributions modernes, /dev
Est créé dynamiquement au démarrage (c'est un système de fichiers mémoire rempli par udev
et amis). Il ne sert à rien de le sauvegarder et de tenter de le restaurer est vain. Cependant, si votre distribution est configurée pour utiliser un /dev
Statique, cela ne s'applique pas (vérifiez /proc/mounts
, Si /dev
Est un tmpfs
c'est une mémoire système de fichiers).
Il existe d'autres systèmes de fichiers que vous ne devez pas sauvegarder; usbfs
(généralement à /proc/bus/usb
, si monté du tout), debugfs
(censé être à /sys/kernel/debug
s'il est monté du tout, mais certaines personnes le mettent quelque part sinon, vous n'avez probablement pas celui-ci), devpts
(monté à /dev/pts
), autres tmpfs
instances (souvent trouvées à /dev/shm
, /var/run
, /var/lock
, Et d'autres endroits; les 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 répertoire de montage automatique magique (tentative de sauvegarde ou de restauration ils pourraient finir en cas de catastrophe, comme vous pourriez finir par sauvegarder/restaurer sur ne autre machine). Vous devez également être prudent avec /media
Et /mnt
, Car des périphériques externes (comme un CD que vous avez oublié dans le lecteur) peuvent y être trouvés, mais vous pouvez également les avoir utilisés exprès pour monter quelque chose qui devrait être sauvegardé.
Notez que, à l'exception des instances tmpfs
, des systèmes de fichiers réseau/montages automatiques et des supports amovibles généralement inoffensifs, les systèmes de fichiers que vous ne devez pas sauvegarder sont tous des descendants de /dev
, /proc
, Ou /sys
. Si vous n'avez pas de système de fichiers réseau (ou de montages automatiques) et aucun support amovible, à l'exception de /sys
Et /proc
Et le redémarrage après une restauration (pour effacer les instances tmpfs
) devrait suffire .
Voir Le Tao de sauvegarde , chapitre 1.
Certains fichiers spéciaux dans/proc et/sys confondent rsync. Généralement, vous ne voulez pas non plus sauvegarder les systèmes de fichiers réseau montés. Des fichiers épars peuvent également provoquer des problèmes.
Ajoutez -x pour le limiter à un seul 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 les fichiers épars de manière sensible.
/ boot,/dev et/proc sont assez inutiles pour la sauvegarde - 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 quelque chose dans/usr qui mérite d'être sauvegardé. Si j'étais vous, je serais le plus préoccupé par la sauvegarde des $ HOME,/var et/etc de l'utilisateur (pour les fichiers de configuration).
Encore une fois, cela dépend vraiment du type de sauvegarde que vous souhaitez effectuer. S'agit-il d'un serveur Web? S'agit-il d'un ordinateur personnel? Est-ce un serveur Shell avec des tonnes de répertoires sous/home?
Vous pouvez réaliser une sauvegarde totale en utilisant sfdisk et dd.
Pour sauvegarder le schéma de partition de chaque disque dur, vous utiliseriez 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
Où /dev/sda1
n'est pas monté, par exemple avec un démarrage live-CD.
(gardez à l'esprit que vous aurez besoin d'avoir beaucoup d'espace libre pour écrire ce fichier; vous pouvez donc vouloir l'écrire sur un support externe) Faites-le 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
Au lieu d'exclure, je ne sauvegarde généralement que ce que je veux. Comprenant: /home
/etc
/var
(sauf /var/log
)
Fondamentalement, les pseudo-systèmes de fichiers (/ proc,/sys,/dev/shm ...) n'ont pas besoin d'être sauvegardés.
Je suis sur une machine Ubuntu 18.04 et je les ai exclus:
/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile
De plus, spécialement pour ma configuration, j'exclus ceux-ci:
/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
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é dans un dossier nommé 'fred') est:
$ Sudo rsync -Pazhmxv --exclude/run/media --exclude/dev --exclude/lost + found --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: afficher la progression -a: mode archive -z: compresser pendant le transfert -h: afficher les numéros dans un format lisible par l'homme -m: élaguer les répertoires vides -x: limiter à un système de fichiers -v: verbeux
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 montre 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
- c'est là que chaque système Ubuntu a un lecteur de sauvegarde à temps plein monté pour les auto-sauvegardes cron rsync
4 fois par jour. Ces lecteurs sont montés par des entrées dans fstab
et sont toujours présents. Les inclure dans une sauvegarde vers un autre système serait dupliqué.
De même, /media
est l'endroit où les clés USB sont montées. Ils sont sauvegardés séparément.
Je suppose que vous n'avez pas Linux sur une machine virtuelle. Dans la mesure du possible, je recommanderais vivement de passer à la virtualisation. Les sauvegardes au niveau vm sont un tout nouveau niveau de cohérence et de facilité d'utilisation. Il existe des outils de virtualisation gratuits, vous n'avez donc pas nécessairement à investir dans VmWare ou un autre outil monstre coûteux.
J'utilise une boîte 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, un crontab décharge 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.
Je prends généralement l'habitude de sauvegarder tout sur un système, même ce que je sais avec certitude est inutile à sauvegarder. C'est plus simple à configurer et vous pouvez être sûr à 100% que vous obtiendrez tout ce dont vous avez besoin inclus dans la sauvegarde.