Cloner un système FreeBSD sur un périphérique USB/réseau

L'objectif est de cloner notre système FreeBSD actuel sur un périphérique USB (ou via le réseau) pour le sauvegarder.

Passez en root.


0. Détecter le périphérique USB sur lequel copier le système

camcontrol devlist

Nous prendrons /dev/da0 pour l'exemple.


1. Préparer le périphérique USB (/dev/da0) :

Cette étape crée une nouvelle partition ZFS sur la clé ou le disque USB, puis initialise un pool ZFS nommé BAK.

⚠️ Attention : toutes les données présentes sur /dev/da0 seront supprimées.

# Effacer les partitions existantes
gpart destroy -F da0

# Créer une nouvelle table de partition GPT
gpart create -s gpt da0

# Ajouter une partition ZFS occupant tout l'espace disponible
gpart add -t freebsd-zfs da0

# Créer le pool ZFS "BAK", monté temporairement sur /mnt
zpool create -o altroot=/mnt BAK /dev/da0p1

2. Installer pigz :

Installer la version multithreadée de gzip (si elle n'est pas déjà présente), pour accélérer la transmission réseau (dans le cas d'un envoi par le réseau).

pkg install -y pigz

3. Créer un snapshot récursif du pool existant :

Supposons que le pool système actuel s'appelle zroot : (taper zfs list pour vérifier).

zfs snapshot -r zroot@clone

4. Clonage avec accélération via pigz :

Cette commande va transférer le snapshot récursivement, en le compressant/décompressant à la volée avec plusieurs threads. Si l'effet est modéré sur une copie vers un périphérique USB, il est en revanche bien réel via le réseau. Raison pour laquelle je le précise systématiquement.

zfs send -R zroot@clone | pigz -c | pigz -dc | zfs receive -Fduv BAK

Voici ce que cela donnerait en envoyant notre snapshot via SSH vers un serveur distant :

zfs send -R zroot@clone | pigz -c | ssh utilisateur@serveur_distant "pigz -dc | zfs receive -Fduv BAK"

Détail des options utilisées :


5. Vérification finale :

Après avoir terminé la copie, vérifier que tout est correctement transféré :

# Vérifier l'état du pool USB
zpool status BAK

# Lister les systèmes de fichiers copiés
zfs list -r BAK

6. Monter manuellement le système cloné (optionnel) :

Si nécessaire, monter manuellement les datasets pour vérifier l'intégrité des données copiées :

zfs mount BAK/ROOT/default # exemple

Note : Adapter BAK/ROOT/default au nom réel du dataset racine.


7. Éjecter proprement le périphérique USB :

Une fois terminé, démonter et exporter le pool proprement avant de débrancher :

zpool export BAK

Le périphérique peut alors être débranché en toute sécurité.



↑ Haut de page