Comme vous l'avez mentionné, BTRFS peut le faire. C'est ainsi que je sauvegarde régulièrement mon ordinateur portable (qui a une disponibilité de 9 semaines, 5 jours au moment où je tape ceci).
Dans mon système de fichiers BTRFS, j'ai des sous-volumes. La manière dont vous divisez vos données en sous-volumes et dont vous les imbriquez n'a pas d'importance ici, tant que vous n'utilisez pas la racine du système de fichiers pour stocker les données que vous souhaitez sauvegarder.
Les commandes suivantes sont destinées à illustrer la syntaxe et les possibilités, je recommande de les encapsuler dans un script qui s'exécute en tant que cronjob ou systemd.timer.
Pour prendre un instantané d'un sous-volume :
btrfs subvolume snapshot -r <source> <dest>
Pour sérialiser un instantané :
btrfs send <snapshot>
Pour sérialiser un instantané par rapport à un plus ancien (c'est-à-dire différentiel) :
btrfs send -p <start> <end>
Pour générer un diff, compresser à la volée, et envoyer au serveur de secours, avec suivi de "progression" :
btrfs send -p <start> <end> | \
pv -bart | \
pbzip2 --best | \
ssh [email protected] "cat > /backups/name.bz2"
Pour faire la même chose, mais recréez les sous-volumes BTRFS sur le serveur de sauvegarde plutôt que de simplement compresser les flux BTRFS :
btrfs send -p <start> <end> | \
pv -bart | \
pbzip2 --best | \
ssh [email protected] "pbzip2 -d | \
btrfs receive <target>"
Pour restaurer, appliquez vos instantanés dans l'ordre à un nouveau système de fichiers BTRFS, via btrfs receive
.
Voici plus d'informations sur les sauvegardes incrémentielles BTRFS
Comme @mark-k-cowan l'a dit, vous pouvez le faire avec des instantanés btrfs. btrfs est trop immature pour moi. L'utilisation de zfs et de son instantané serait préférable. Comme @brady-dean l'a dit, les instantanés LVM sont une méthode indépendante du système de fichiers. Les instantanés LVM peuvent avoir un énorme impact négatif sur les performances.
Acronis dispose d'un module de noyau qui fonctionne au niveau de la couche de blocage pour créer des instantanés. Le pilote Datto Block est un module de noyau GPLv2 (ahem "freeware") qui fait la même chose. (Avertissement :je ne l'ai jamais utilisé.)