Sauvegarde système complète avec rsync

De ArchwikiFR


Traduction du Wiki concernant ​​l'utilisation de rsync dans la copie complète de l'arborescence "/" , à l' exception de quelques dossiers sélectionnés.

Cette approche est considérée comme meilleure que la copie par dd, car utilisable même avec des partitions source et destination (système et sauvegarde) de dimensions différentes, et mieux aussi que la copie par cp -a, car permettant un meilleur contrôle des permissions de fichiers, attributs, ACLs et attributs étendus.

Chacune de ces méthodes fonctionne avec un système en cours d'utilisation, mais des fichiers modifiés pendant la sauvegarde pourraient ne pas être transférés, cause de comportements imprévisibles des programmes en dépendant.

Cette approche permet aussi la migration d'une installation existante vers un nouveau disque dur ou SSD .


Avec une seule commande

Cette commande dépend de l'expansion des accolades, disponible dans les shells bash et zsh. Si vous utilisez un autre shell, chaque motif --exclude doit être répété manuellement.

 # rsync -aAXv --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/home/*","/lost+found"} / /path/to/backup/directory

Les options -aAX, définissent un transfert en mode archive avec conservation des liens symboliques, des périphériques rattachés, autorisations et propriétés, dates de modification, ACLs et attributs étendus (à condition que le système de fichiers cible prenne en charge ces fonctions - ce qui n'est pas le cas des partitions vfat ou ntfs.

L'option --delete, inutile pour une sauvegarde unique, est nécessaire dans une sauvegarde incrémentale, donc mise à jour d'une précédente sauvegarde avec prise en compte des modification sans réécriture complète.

L'option --exclude définit les fichiers à exclure, correspondant aux motifs définis. Les contenus de /dev, /proc, /sys, /tmp et /run sont exclus parce qu'ils sont peuplés au démarrage (bien que les dossiers eux-mêmes préexistent).

Le /home/ est à exclure dans le cas, habituel, d'une partition séparée montée sur /home et faisant l'objet de sauvegardes différentes.

Exclure de même /lost+found, spécifique au système de fichiers.

Créer des motifs d'exclusion évite l'expansion par le shell, ce qui est nécessaire, en particulier lors de la sauvegarde depuis une connexion SSH. Terminer les chemins exclus par l'astérisque * assurera de créer les répertoires eux-mêmes s'ils n'existaient pas.

Note :
   Si vous avez monté la partition de sauvegarde ailleurs que sur /mnt ou /media, n'oubliez pas d'ajouter ce point de montage à la liste des motifs d'exclusion pour éviter une boucle infinie.
   S'il y a des montages "bind" dans le système, ils doivent être exclus de même, pour que le contenu de la liaison montée ne soit copié qu'une seule fois.
   Si vous utilisez un fichier d'échange swap, assurez-vous de l'avoir exclu.
   Si vous voulez intégrer la sauvegarde du contenu du /home/ (et donc ne pas le garder dans la liste des motifs d'exclusion), considérez que, contenant vos données, il pourrait être beaucoup plus grand que les fichiers système. 
   Envisagez alors d'exclure des sous-répertoires sans importance tels  /home/*/.thumbnails/*, /home/*/.cache/mozilla/*, /home/*/.cache/chromium/*, /home/*/.local/share/*, /Trash/*, etc. 
Si GVFS est installé, /home/*/.gvfs doivent être exclus pour éviter les erreurs de rsync.
   Vous pouvez inclure d'autres options rsync, telles que (voir man rsync pour la liste complète) :
   -P = same as --partial --progress
  • Si vous êtes un gros utilisateur de hardlinks, vous pouvez envisager l'option -H, désactivée par défaut en raison du coût en mémoire, ce qui pose maintenant peu de problèmes sur les machines modernes. Le dossier /usr/ en particulier comporte beaucoup de tels liens dans le seul but d'économiser l'espace disque.
  • L'option --delete utilisée pour des sauvegardes incrémentales implique que le chemin source ne se termine pas avec /* , car cette option n'aurait d'effet que sur les fichiers des sous-répertoires du répertoire source, mais aucun effet sur ​​les fichiers résidant directement à l'intérieur du répertoire source.
  • Si vous utilisez des fichiers fragmentés, tels que les disques virtuels, les images Docker et similaire, vous devez ajouter l' option -S.
  • L'option --numeric-ids désactive le mappage des utilisateurs et des groupes noms, groupe numérique et les ID utilisateur sera transféré à la place. Ceci est utile lors de la sauvegarde sur SSH ou lors de l' utilisation d' un système direct de sauvegarde disque système différent.
  • Choisir l'option --info=progress2 au lieu de -v affichera la progression globale et la vitesse de transfert au lieu d'une interminable liste de fichiers.


   Remarque : l’option –exclude de rsync pourrait vous surprendre si vous l'utilisiez par exemple pour la synchronisation de vos données (/home/user/) :
   $ rsync -a --delete --info=progress2 --exclude="/home/user/ARCHIVES/*" /home/user/ /run/media/user/DDexterne/user/ 
   n'excluera pas le répertoire "ARCHIVES", utilisez :
   $ rsync -a --delete --info=progress2 --exclude="/ARCHIVES/*" /home/user/ /run/media/user/DDexterne/user/   
   car, pour rsync, la racine de /ARCHIVES n’est pas celle de votre système mais de votre dossier !
   

Si vous souhaitez restaurer la sauvegarde, utilisez la même commande rsync que précédemment, mais en inversant source et destination.

Exigences de démarrage

Il peut être utile d'avoir une sauvegarde amorçable, dans le cas d'un système corrompu ou cassé par une mise à jour. La sauvegarde peut également être utilisée comme banc d'essai pour des mises à jour, tests d'activation des dépôts testing, etc. Si vous avez transféré le système sur une partition ou un disque différent et que vous vouliez booter dessus, le processus consiste en la simple mise à jour du /etc/fstab de la sauvegarde et du fichier de configuration de votre bootloader.

Mise à jour du fstab

Sans redémarrer, modifier le fstab de la sauvegarde pour y reporter les changements :

   /path/to/backup/etc/fstab
   tmpfs        /tmp          tmpfs     nodev,nosuid             0   0
   /dev/sda1    /boot         ext2      defaults                 0   2
   /dev/sda5    none          swap      defaults                 0   0
   /dev/sda6    /             ext4      defaults                 0   1
   /dev/sda7    /home         ext4      defaults                 0   2


Comme rsync a effectué une copie récursive de l'ensemble du système de fichiers racine, tous les points de montage vers sda poseront problème et démarrer la sauvegarde échouera. Dans cet exemple, toutes les entrées fautives sont remplacées par une seule :

   /path/to/backup/etc/fstab
   tmpfs        /tmp          tmpfs     nodev,nosuid             0   0
   /dev/sdb1    /             ext4      defaults                 0   1

N'oubliez pas d'utiliser les noms de périphériques et systèmes de fichiers appropriés

Mise à jour de la configuration du bootloader

Cette section suppose que vous avez sauvegardé le système sur un autre disque ou une partition, que votre bootloader actuel fonctionne bien, et que vous vouliez démarrer à partir de la sauvegarde elle-même.

Pour Syslinux , tout ce que vous devez faire est de dupliquer l'entrée en cours, à l'exception de celles pointant vers un autre lecteur ou une autre partition. Astuce: Au lieu d'éditer syslinux.cfg , vous pouvez également modifier temporairement le menu pendant le démarrage. Lorsque le menu apparaît, appuyez sur la touche <Tab> et modifiez pertinemment les entrées. Les partitions sont comptées à partir de l'unité, les lecteurs sont comptés à partir de zéro.

Pour GRUB, il est recommandé de régénérer automatiquement le fichier de configuration principal grub.cfg .

Vérifiez également la nouvelle entrée de menu dans /boot/grub/grub.cfg . Assurez-vous que les UUID correspondent à la nouvelle partition, sinon il pourrait encore tenter de démarrer sur l'ancien système. L'UUID d'une partition s'obtient par :

 # lsblk -no NAME,UUID /dev/sdb3

où vous substituez la partition souhaitée à /dev/sdb3. Pour répertorier les UUID des partitions où grub pense pouvoir démarrer, utiliser grep:

 # Grep UUID = /boot/grub/grub.cfg

Premier démarrage

Redémarrez l'ordinateur et choisir la bonne entrée dans le bootloader. Cela va charger le système pour la première fois. Tous les périphériques doivent être détectés et les dossiers vides dans / seront remplis.

Maintenant , vous pouvez ré-éditer /etc/fstab pour ajouter les partitions précédemment retirées et les points de montage.

Voir également