Voici une introduction à utiliser rsync
pour la sauvegarde sur le Pi. Une fois la sauvegarde initiale créée, la maintenir à jour de cette façon est beaucoup plus rapide que d'extraire constamment l'image entière. Vous pouvez le faire sur un disque dur local ou sur un réseau.
En fait, vous ne voulez pas qu'une copie complète d'un système en cours d'exécution soit sauvegardée, car certains éléments apparents dans le système de fichiers n'existent qu'au moment de l'exécution. Inclure cela dans une sauvegarde puis l'utiliser pour recréer une image ultérieurement peut créer des problèmes pour vous.
Il y a aussi d'autres exceptions. rsync
peut accepter une liste de modèles ( glob ) à exclure, et ceux-ci peuvent être lus à partir d'un fichier. Commençons par ce qui devrait se trouver dans un tel fichier. Notez que les entrées sont de la forme /directory/*
et non /directory
. C’est parce que nous voulons qu’ils existent, mais nous ne voulons rien y copier.
/proc/*
/sys/*
Ceux-ci n'existent pas vraiment sur le disque. Ils constituent une interface avec le noyau, qui les crée et les maintient en mémoire . Si vous les copiez puis les recopiez dans un système et que vous l'amorcez, cela n'aura (au mieux) aucun sens, car le noyau les utilise comme points de montage pour les interfaces [Si vous voulez voir ce qui se passe lorsque vous montez une partition de système de fichiers sur un répertoire contenant des données, essayez. Cela fonctionne et ne fera aucun mal, mais ce qui était dans le répertoire est maintenant inaccessible.]
Notez qu'il est essentiel que les points de montage /sys
et /proc
existent. Mais ils ne devraient rien contenir. Prochain:
/dev/*
Le dev
répertoire n’est pas tout à fait la même chose proc
et sys
pour nos besoins. Si vous pensez que vous devez enregistrer ceci afin que vous puissiez avoir les mêmes nœuds de périphérique dans votre sauvegarde, vous vous trompez . Ne te dérange pas. Ne pas copier dev
. Il y a longtemps, Linux fonctionnait de la sorte, mais ce n'est plus le cas.
/boot/*
C'est en quelque sorte un cas particulier avec la plupart (peut-être toutes) des distributions spécifiques à Pi, telles que Raspbian. C'est en fait un point de montage pour la première partition, vfat. Nous allons traiter cela séparément. Quoi que vous fassiez, ne vous inquiétez pas de l'inclure ici, car encore une fois, c'est un point de montage.
/tmp/*
/run/*
/run
généralement pas sur le disque, c’est en mémoire. /tmp
Cela pourrait peut -être l'être aussi (cela épargnerait un peu d'action de la carte SD), mais dans tous les cas, comme l'indiquent leurs noms, ce ne sont pas des espaces pour stocker des données persistantes. Les applications qui les utilisent s’attendent à ce qu’elles puissent être supprimées à chaque démarrage.
/mnt/*
/media/*
Celles-ci sont importantes, en particulier si vous envisagez de sauvegarder sur un disque dur ou une clé USB et que le périphérique est inséré /mnt
ou /media
(le montage automatique utilise généralement cette dernière), car si vous n'excluez pas l'emplacement de ces périphériques dans le système de fichiers, créez une boucle en sauvegardant le contenu du lecteur sur lui-même, jusqu'à ce qu'il manque d'espace. Je pense que cela rsync
pourrait être assez intelligent pour repérer quelque chose qui est idiot mais essayez d'éviter de tester les lieux.
Sur la sauvegarde actuelle: Créez un répertoire sur le disque dur, le périphérique USB, etc. montés localement, par exemple "pi_backup". Vous pouvez également sauvegarder sur un emplacement distant via ssh
(voir ci-dessous) ou à l'aide d'un système de fichiers monté sur le réseau, mais cela prendra probablement un certain temps la première fois.
Si le fichier contenant la liste à exclure est /rsync-exclude.txt
1 et que votre lecteur l’est /mnt/usbhd
, pour effectuer la sauvegarde proprement dite:
rsync -aHv --delete --exclude-from=/rsync-exclude.txt / /mnt/usbhd/pi_backup/
Notez qu'il y a un slash finalpi_backup/
.
Cela prendra un certain temps et produira beaucoup de résultats (si vous voulez examiner cela dans un journal, ajoutez-le > rsync.log
). --delete
n'a pas de sens la première fois, mais pour garder la sauvegarde à jour, utilisez-la. Cela garantit que les éléments que vous avez ultérieurement supprimés sur le Pi sont également supprimés de votre sauvegarde. Les a
ensembles récursivité dans les répertoires et vérifie tous les attributs de fichier correspondance. -H
est de conserver les liens durs 2 , v
est pour verbose c'est pourquoi vous obtenez une sortie (sinon, rsync
c'est calme). Voir man rsync
pour plus.
Il existe un raccourci par lequel vous pouvez ignorer le --exclude-from
fichier. Si vous êtes certain que tout ce que vous ne voulez pas copier ( /tmp
etc.) se trouve sur des systèmes de fichiers distincts, vous pouvez simplement utiliser:
rsync -axHv --delete-during / /mnt/usbhd/pi_backup/
-x
a été inséré. C'est la forme abrégée de --one-file-system
, qui indique de rsync
ne pas dépasser les limites du système de fichiers. Personnellement, je préfère le --exclude-from
, mais par exemple, Raspbian par défaut, --one-file-system
fonctionnera bien. Vous pouvez utiliser les deux si vous voulez être -x
prudent: D
Ce n'est pas une sauvegarde complète. C’est suffisant si vous n’avez rien inséré boot
et que vous pouvez utiliser la sauvegarde pour restaurer le système en collant la carte sur un ordinateur et en exécutant:
rsync -av --delete-during /mnt/usbhd/pi_backup/ /mnt/sdcard_partition2/
Vous pouvez également faire cela avec une carte avec une nouvelle image dessus (en supposant que ce soit la même chose que votre image de base) bien que cela soit un peu inefficace si vous devez créer une image (car vous allez ensuite en écraser la majeure partie). Vous pouvez également connecter une autre carte SD via un adaptateur USB contenant une telle image et utiliser la méthode ci-dessus pour conserver une carte dupliquée.
Si vous avez inséré des éléments /boot
(par exemple, un noyau personnalisé), /boot/config.txt
vous devrez également les sauvegarder (assez simple - il n’ya pas grand-chose à faire). Il suffit de le faire séparément, et lors de la restauration, ces éléments sont intégrés à la première partition.
Voir ici si vous souhaitez créer une image vierge de style Raspbian dans laquelle vous pourrez ensuite effectuer une sauvegarde. Vous pouvez utiliser une méthodologie similaire pour créer une carte de style Raspbian vide. Simplement au lieu de gérer un .img
fichier, vous utiliseriez un périphérique réel (par exemple /dev/sdb
), ce qui signifie que tout ce que vous avez à faire est de créer la table de partition fdisk
, puis format /dev/sdb1
et sdb2
(ou autre) avec mkfs
.
Mais copier toute l'image est plus facile! Pourquoi s'embêter avec ça?
Ce n'est pas si dur; J'ai restauré une carte vierge (formatée selon ce dernier lien) en 10 minutes. Oui, dd
il est plus simple d’ utiliser l’ensemble (si vous trouvez des mots confus, par exemple ...), MAIS cela prend un certain temps à chaque fois que vous souhaitez mettre à jour votre sauvegarde, car vous devez le faire à 100% à chaque fois. Utiliser rsync
, une fois qu'une sauvegarde existe, la mettre à jour est beaucoup plus rapide, vous pouvez donc l'installer sans douleur tous les jours via cron. Sur un réseau même. Toutes les six heures. Plus vous le faites souvent, moins cela prendra de temps.
rsync
via ssh
Voici un exemple:
rsync [options] --rsh="ssh [ssh options]" root@[the pi ip]:/ /backup/rpi/
"Options" serait, par exemple, -av --delete --exclude-from=/rsync-exclude.txt
et "options ssh" est ce que vous utilisez normalement (le cas échéant). Vous devez avoir un accès root via le ssh
faire aux fins d'une sauvegarde du système (défini PermitRootLogin=yes
dans /etc/ssh/sshd_config
et redémarrez le serveur).
1 Vous devriez conserver ce fichier. Vous pouvez y mettre des commentaires sur les lignes commençant par #
ou ;
. Cela pourrait inclure la rsync
commande réelle , qui peut être copiée plus tard pour que vous n'ayez pas à vous en souvenir à chaque fois.
2 Merci à Kris de l'avoir signalé, rsync
ne le fait pas automatiquement.
dd
, regardez dansrsync
.