• [^] # Re: BTRFS

    Posté par . En réponse à la dépêche ZFS, Canonical et GPL. Évalué à 9.

    Tu fais un snapshot en read only de la partition que tu veux sauvegarder (par exemple /home) :

    btrfs subvolume snapshot -r /home /home/.snapshots/$(date +"%Y%m%dT%H%M%S")

    Tu peux ensuite en faire ce que tu veux, par exemple l’envoyer en SSH sur un serveur distant :

    btrfs send /home/.snapshots/$date | gzip | ssh backups@srv-backup "cat > $date.gz"

    Tu peux même faire du backup incrémental :

    btrfs send -p /home/.snapshots/$previous /home/.snapshots/$date | gzip | ssh backups@srv-backup "cat > $previous-to-$date.gz"

    Pour restaurer, c’est un poil plus technique, mais rien d’insurmontable :

    cd /home
    mkdir .snapshots
    cd .snapshots
    ssh backups@srv-backup "cat $lastfull.gz $lastfull-to-${inc1}.gz ${inc1}-to-${inc2}.gz" | zcat | btrfs receive .
    # A partir de là on a récupéré le dernier snapshot en mode lecture seule.
    # On peut faire un gros copier bourrin cp -a /home/.snapshots/${inc2}/{*,.*} /home,
    # ou alors on peut faire ça plus finement et ordonner à btrfs d’utiliser
    # le dernier snapshot pour /home :
    # Faire une copie du snapshot à restaurer en mode lecture-écriture
    # (les snapshots récupéres par btrfs receive sont toujours en read-only
    btrfs subvolume snapshot ${inc2} last-rw
    # On récupère l’id de last-rw
    id=$(btrfs subvolume list /home | awk '/\/last-rw$/{print 2ドル}')
    # On change le snapshot utilisé par /home, et on remonte
    btrfs subvolume set-default $id /home
    cd /; umount /home; mount /home