[{"data":1,"prerenderedAt":1189},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-serveex-advanced-btrfs-snapshots-":384,"-fr-serveex-advanced-btrfs-snapshots--surround":1184},[4,16,93,269,278,339],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":15},"À propos","i-noto-star","\u002Ffr\u002Fabout","fr\u002F1.about",[10],{"title":11,"path":12,"stem":13,"icon":14},"Bienvenue","\u002Ffr\u002Fabout\u002Fwelcome","fr\u002F1.about\u002F1.welcome","i-lucide-home",false,{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":15},"Généralités","i-noto-open-book","\u002Ffr\u002Fgeneral","fr\u002F2.general",[22,26,44,58,75],{"title":17,"path":23,"stem":24,"icon":25},"\u002Ffr\u002Fgeneral\u002Fsummary","fr\u002F2.general\u002F1.summary","i-lucide-bookmark",{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":15},"Réseau","i-lucide-network","\u002Ffr\u002Fgeneral\u002Fnetworking","fr\u002F2.general\u002F2.networking",[32,36,40],{"title":33,"path":34,"stem":35},"NAT & DHCP","\u002Ffr\u002Fgeneral\u002Fnetworking\u002Fnat","fr\u002F2.general\u002F2.networking\u002F1.nat",{"title":37,"path":38,"stem":39},"Zone DNS","\u002Ffr\u002Fgeneral\u002Fnetworking\u002Fdns","fr\u002F2.general\u002F2.networking\u002F2.dns",{"title":41,"path":42,"stem":43},"Samba","\u002Ffr\u002Fgeneral\u002Fnetworking\u002Fsamba","fr\u002F2.general\u002F2.networking\u002F3.samba",{"title":45,"icon":46,"path":47,"stem":48,"children":49,"page":15},"Stockage","i-lucide-hard-drive","\u002Ffr\u002Fgeneral\u002Fstorage","fr\u002F2.general\u002F3.storage",[50,54],{"title":51,"path":52,"stem":53},"RAID","\u002Ffr\u002Fgeneral\u002Fstorage\u002Fraid","fr\u002F2.general\u002F3.storage\u002F1.raid",{"title":55,"path":56,"stem":57},"ZFS","\u002Ffr\u002Fgeneral\u002Fstorage\u002Fzfs","fr\u002F2.general\u002F3.storage\u002F2.zfs",{"title":59,"icon":60,"path":61,"stem":62,"children":63,"page":15},"Matériel","i-lucide-server","\u002Ffr\u002Fgeneral\u002Fhardware","fr\u002F2.general\u002F4.hardware",[64,68,71],{"title":65,"path":66,"stem":67},"Les bases","\u002Ffr\u002Fgeneral\u002Fhardware\u002Fbasics","fr\u002F2.general\u002F4.hardware\u002F1.basics",{"title":27,"path":69,"stem":70},"\u002Ffr\u002Fgeneral\u002Fhardware\u002Fnetwork","fr\u002F2.general\u002F4.hardware\u002F2.network",{"title":72,"path":73,"stem":74},"Le ProloNAS","\u002Ffr\u002Fgeneral\u002Fhardware\u002Fprolonas","fr\u002F2.general\u002F4.hardware\u002F3.prolonas",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":15},"Linux pour les nuls","i-lucide-terminal","\u002Ffr\u002Fgeneral\u002Flinux","fr\u002F2.general\u002F5.linux",[81,85,89],{"title":82,"path":83,"stem":84},"CLI pour les nuls","\u002Ffr\u002Fgeneral\u002Flinux\u002Fcli-basics","fr\u002F2.general\u002F5.linux\u002F1.cli-basics",{"title":86,"path":87,"stem":88},"Dossiers et partitions","\u002Ffr\u002Fgeneral\u002Flinux\u002Ffilesystem","fr\u002F2.general\u002F5.linux\u002F2.filesystem",{"title":90,"path":91,"stem":92},"Outils CLI pratiques","\u002Ffr\u002Fgeneral\u002Flinux\u002Fhandy-tools","fr\u002F2.general\u002F5.linux\u002F3.handy-tools",{"title":94,"icon":95,"path":96,"stem":97,"children":98,"page":15},"Serveex","i-noto-microscope","\u002Ffr\u002Fserveex","fr\u002F3.serveex",[99,103,125,143,169,187,201,215,233,247],{"title":100,"path":101,"stem":102,"icon":25},"Introduction","\u002Ffr\u002Fserveex\u002Fintroduction","fr\u002F3.serveex\u002F1.introduction",{"title":104,"icon":105,"path":106,"stem":107,"children":108,"page":15},"Cœur du serveur","i-lucide-server-cog","\u002Ffr\u002Fserveex\u002Fcore","fr\u002F3.serveex\u002F2.core",[109,113,117,121],{"title":110,"path":111,"stem":112},"Debian 13","\u002Ffr\u002Fserveex\u002Fcore\u002Finstallation","fr\u002F3.serveex\u002F2.core\u002F1.installation",{"title":114,"path":115,"stem":116},"Docker","\u002Ffr\u002Fserveex\u002Fcore\u002Fdocker","fr\u002F3.serveex\u002F2.core\u002F2.docker",{"title":118,"path":119,"stem":120},"WireGuard","\u002Ffr\u002Fserveex\u002Fcore\u002Fwireguard","fr\u002F3.serveex\u002F2.core\u002F3.wireguard",{"title":122,"path":123,"stem":124},"SWAG","\u002Ffr\u002Fserveex\u002Fcore\u002Fswag","fr\u002F3.serveex\u002F2.core\u002F4.swag",{"title":126,"icon":127,"path":128,"stem":129,"children":130,"page":15},"Sécurité","i-lucide-shield","\u002Ffr\u002Fserveex\u002Fsecurity","fr\u002F3.serveex\u002F3.security",[131,135,139],{"title":132,"path":133,"stem":134},"Cloudflare Zero Trust","\u002Ffr\u002Fserveex\u002Fsecurity\u002Fcloudflare","fr\u002F3.serveex\u002F3.security\u002F2.cloudflare",{"title":136,"path":137,"stem":138},"TinyAuth","\u002Ffr\u002Fserveex\u002Fsecurity\u002Ftinyauth","fr\u002F3.serveex\u002F3.security\u002F3.tinyauth",{"title":140,"path":141,"stem":142},"Pocket ID","\u002Ffr\u002Fserveex\u002Fsecurity\u002Fpocket-id","fr\u002F3.serveex\u002F3.security\u002F4.pocket-id",{"title":144,"icon":145,"path":146,"stem":147,"children":148,"page":15},"Monitoring","i-lucide-chart-no-axes-column","\u002Ffr\u002Fserveex\u002Fmonitoring","fr\u002F3.serveex\u002F4.monitoring",[149,153,157,161,165],{"title":150,"path":151,"stem":152},"Uptime-Kuma","\u002Ffr\u002Fserveex\u002Fmonitoring\u002Fuptime-kuma","fr\u002F3.serveex\u002F4.monitoring\u002F1.uptime-kuma",{"title":154,"path":155,"stem":156},"Dozzle","\u002Ffr\u002Fserveex\u002Fmonitoring\u002Fdozzle","fr\u002F3.serveex\u002F4.monitoring\u002F2.dozzle",{"title":158,"path":159,"stem":160},"Speedtest Tracker","\u002Ffr\u002Fserveex\u002Fmonitoring\u002Fspeedtest-tracker","fr\u002F3.serveex\u002F4.monitoring\u002F3.speedtest-tracker",{"title":162,"path":163,"stem":164},"Beszel","\u002Ffr\u002Fserveex\u002Fmonitoring\u002Fbeszel","fr\u002F3.serveex\u002F4.monitoring\u002F4.beszel",{"title":166,"path":167,"stem":168},"UpSnap","\u002Ffr\u002Fserveex\u002Fmonitoring\u002Fupsnap","fr\u002F3.serveex\u002F4.monitoring\u002F5.upsnap",{"title":170,"icon":171,"path":172,"stem":173,"children":174,"page":15},"Média & Seedbox","i-lucide-list-video","\u002Ffr\u002Fserveex\u002Fmedia","fr\u002F3.serveex\u002F5.media",[175,179,183],{"title":176,"path":177,"stem":178},"Jellyfin","\u002Ffr\u002Fserveex\u002Fmedia\u002Fjellyfin","fr\u002F3.serveex\u002F5.media\u002F1.jellyfin",{"title":180,"path":181,"stem":182},"qBittorrent","\u002Ffr\u002Fserveex\u002Fmedia\u002Fqbittorrent","fr\u002F3.serveex\u002F5.media\u002F2.qbittorrent",{"title":184,"path":185,"stem":186},"Automatisation","\u002Ffr\u002Fserveex\u002Fmedia\u002Fservarr","fr\u002F3.serveex\u002F5.media\u002F3.servarr",{"title":188,"icon":189,"path":190,"stem":191,"children":192,"page":15},"Cloud & Photos","i-lucide-cloud-upload","\u002Ffr\u002Fserveex\u002Fcloud","fr\u002F3.serveex\u002F6.cloud",[193,197],{"title":194,"path":195,"stem":196},"Immich","\u002Ffr\u002Fserveex\u002Fcloud\u002Fimmich","fr\u002F3.serveex\u002F6.cloud\u002F1.immich",{"title":198,"path":199,"stem":200},"Nextcloud","\u002Ffr\u002Fserveex\u002Fcloud\u002Fnextcloud","fr\u002F3.serveex\u002F6.cloud\u002F2.nextcloud",{"title":202,"icon":203,"path":204,"stem":205,"children":206,"page":15},"Fichiers & partage","i-lucide-folder-tree","\u002Ffr\u002Fserveex\u002Ffiles","fr\u002F3.serveex\u002F7.files",[207,211],{"title":208,"path":209,"stem":210},"File Browser Quantum","\u002Ffr\u002Fserveex\u002Ffiles\u002Ffile-browser-quantum","fr\u002F3.serveex\u002F7.files\u002F1.file-browser-quantum",{"title":212,"path":213,"stem":214},"Pingvin","\u002Ffr\u002Fserveex\u002Ffiles\u002Fpingvin","fr\u002F3.serveex\u002F7.files\u002F2.pingvin",{"title":216,"icon":217,"path":218,"stem":219,"children":220,"page":15},"Développement","i-lucide-code-xml","\u002Ffr\u002Fserveex\u002Fdevelopment","fr\u002F3.serveex\u002F8.development",[221,225,229],{"title":222,"path":223,"stem":224},"Code-Serveur","\u002Ffr\u002Fserveex\u002Fdevelopment\u002Fcode-server","fr\u002F3.serveex\u002F8.development\u002F1.code-server",{"title":226,"path":227,"stem":228},"Forgejo","\u002Ffr\u002Fserveex\u002Fdevelopment\u002Fforgejo","fr\u002F3.serveex\u002F8.development\u002F2.forgejo",{"title":230,"path":231,"stem":232},"IT Tools","\u002Ffr\u002Fserveex\u002Fdevelopment\u002Fit-tools","fr\u002F3.serveex\u002F8.development\u002F3.it-tools",{"title":234,"icon":235,"path":236,"stem":237,"children":238,"page":15},"Applications utiles","i-lucide-award","\u002Ffr\u002Fserveex\u002Fapps","fr\u002F3.serveex\u002F9.apps",[239,243],{"title":240,"path":241,"stem":242},"AdGuard Home","\u002Ffr\u002Fserveex\u002Fapps\u002Fadguard","fr\u002F3.serveex\u002F9.apps\u002F1.adguard",{"title":244,"path":245,"stem":246},"Vaultwarden","\u002Ffr\u002Fserveex\u002Fapps\u002Fvaultwarden","fr\u002F3.serveex\u002F9.apps\u002F2.vaultwarden",{"title":248,"icon":249,"path":250,"stem":251,"children":252,"page":15},"Avancé","i-lucide-flask-conical","\u002Ffr\u002Fserveex\u002Fadvanced","fr\u002F3.serveex\u002F91.advanced",[253,257,261,265],{"title":254,"path":255,"stem":256},"Authentik","\u002Ffr\u002Fserveex\u002Fadvanced\u002Fauthentik","fr\u002F3.serveex\u002F91.advanced\u002F1.authentik",{"title":258,"path":259,"stem":260},"Arcane","\u002Ffr\u002Fserveex\u002Fadvanced\u002Farcane","fr\u002F3.serveex\u002F91.advanced\u002F2.arcane",{"title":262,"path":263,"stem":264},"Backrest","\u002Ffr\u002Fserveex\u002Fadvanced\u002Fbackrest","fr\u002F3.serveex\u002F91.advanced\u002F3.backrest",{"title":266,"path":267,"stem":268},"Snapshots BTRFS","\u002Ffr\u002Fserveex\u002Fadvanced\u002Fbtrfs-snapshots","fr\u002F3.serveex\u002F91.advanced\u002F4.btrfs-snapshots",{"title":270,"icon":271,"path":272,"stem":273,"children":274,"page":15},"Stockeex","i-noto-computer-disk","\u002Ffr\u002Fstockeex","fr\u002F4.stockeex",[275],{"title":270,"path":276,"stem":277,"icon":25},"\u002Ffr\u002Fstockeex\u002Fintroduction","fr\u002F4.stockeex\u002F1.introduction",{"title":279,"icon":280,"path":281,"stem":282,"children":283,"page":15},"Mes bêtises","i-noto-test-tube","\u002Ffr\u002Fnonsense","fr\u002F5.nonsense",[284,287,309],{"title":279,"path":285,"stem":286,"icon":25},"\u002Ffr\u002Fnonsense\u002Fsummary","fr\u002F5.nonsense\u002F1.summary",{"title":288,"icon":289,"path":290,"stem":291,"children":292,"page":15},"Python","i-lucide-file-code-2","\u002Ffr\u002Fnonsense\u002Fpython","fr\u002F5.nonsense\u002F2.python",[293,297,301,305],{"title":294,"path":295,"stem":296},"Nvidia Stock Bot","\u002Ffr\u002Fnonsense\u002Fpython\u002Fnvidia-stock-bot","fr\u002F5.nonsense\u002F2.python\u002F1.nvidia-stock-bot",{"title":298,"path":299,"stem":300},"AdGuard CIDRE","\u002Ffr\u002Fnonsense\u002Fpython\u002Fadguard-cidre","fr\u002F5.nonsense\u002F2.python\u002F2.adguard-cidre",{"title":302,"path":303,"stem":304},"Lumeex","\u002Ffr\u002Fnonsense\u002Fpython\u002Flumeex","fr\u002F5.nonsense\u002F2.python\u002F3.lumeex",{"title":306,"path":307,"stem":308},"Instameex","\u002Ffr\u002Fnonsense\u002Fpython\u002Finstameex","fr\u002F5.nonsense\u002F2.python\u002F4.instameex",{"title":310,"icon":311,"path":312,"stem":313,"children":314,"page":15},"Bash","i-lucide-file-terminal","\u002Ffr\u002Fnonsense\u002Fbash","fr\u002F5.nonsense\u002F3.bash",[315,319,323,327,331,335],{"title":316,"path":317,"stem":318},"Doublons servarr","\u002Ffr\u002Fnonsense\u002Fbash\u002Fservarr-duplicates","fr\u002F5.nonsense\u002F3.bash\u002F1.servarr-duplicates",{"title":320,"path":321,"stem":322},"Luks backup","\u002Ffr\u002Fnonsense\u002Fbash\u002Fluks-backup","fr\u002F5.nonsense\u002F3.bash\u002F2.luks-backup",{"title":324,"path":325,"stem":326},"Socat Proxy","\u002Ffr\u002Fnonsense\u002Fbash\u002Fsocat-proxy","fr\u002F5.nonsense\u002F3.bash\u002F3.socat-proxy",{"title":328,"path":329,"stem":330},"HotDisk","\u002Ffr\u002Fnonsense\u002Fbash\u002Fhotdisk","fr\u002F5.nonsense\u002F3.bash\u002F4.hotdisk",{"title":332,"path":333,"stem":334},"Backrest Docker Stop","\u002Ffr\u002Fnonsense\u002Fbash\u002Fbackrest-docker-stop","fr\u002F5.nonsense\u002F3.bash\u002F5.backrest-docker-stop",{"title":336,"path":337,"stem":338},"rm Confirmation Guard","\u002Ffr\u002Fnonsense\u002Fbash\u002Frm-confirmation","fr\u002F5.nonsense\u002F3.bash\u002F6.rm-confirmation",{"title":340,"icon":341,"path":342,"stem":343,"children":344,"page":15},"Recyclage","i-noto-recycling-symbol","\u002Ffr\u002Frecycled","fr\u002F6.recycled",[345,348,362],{"title":340,"path":346,"stem":347,"icon":25},"\u002Ffr\u002Frecycled\u002Fsummary","fr\u002F6.recycled\u002F1.summary",{"title":349,"icon":350,"path":351,"stem":352,"children":353,"page":15},"Obsolète","i-lucide-trash-2","\u002Ffr\u002Frecycled\u002Fdeprecated","fr\u002F6.recycled\u002F2.deprecated",[354,358],{"title":355,"path":356,"stem":357},"WireGuard 14","\u002Ffr\u002Frecycled\u002Fdeprecated\u002Fwireguard-14","fr\u002F6.recycled\u002F2.deprecated\u002F1.wireguard-14",{"title":359,"path":360,"stem":361},"File Browser","\u002Ffr\u002Frecycled\u002Fdeprecated\u002Ffile-browser","fr\u002F6.recycled\u002F2.deprecated\u002F2.file-browser",{"title":363,"icon":364,"path":365,"stem":366,"children":367,"page":15},"Alternatives","i-lucide-arrow-left-right","\u002Ffr\u002Frecycled\u002Falternatives","fr\u002F6.recycled\u002F3.alternatives",[368,372,376,380],{"title":369,"path":370,"stem":371},"Plex","\u002Ffr\u002Frecycled\u002Falternatives\u002Fplex","fr\u002F6.recycled\u002F3.alternatives\u002F1.plex",{"title":373,"path":374,"stem":375},"qBittorrent pour Plex","\u002Ffr\u002Frecycled\u002Falternatives\u002Fqbittorrent-for-plex","fr\u002F6.recycled\u002F3.alternatives\u002F2.qbittorrent-for-plex",{"title":377,"path":378,"stem":379},"Servarr pour Plex","\u002Ffr\u002Frecycled\u002Falternatives\u002Fservarr-for-plex","fr\u002F6.recycled\u002F3.alternatives\u002F3.servarr-for-plex",{"title":381,"path":382,"stem":383},"Gitea","\u002Ffr\u002Frecycled\u002Falternatives\u002Fgitea","fr\u002F6.recycled\u002F3.alternatives\u002F4.gitea",{"id":385,"title":266,"body":386,"contributors":1176,"description":1177,"extension":1178,"hideCopyPage":15,"hideHeader":15,"hideToc":15,"links":1179,"meta":1180,"navigation":1181,"path":267,"seo":1182,"stem":268,"__hash__":1183},"docs_fr\u002Ffr\u002F3.serveex\u002F91.advanced\u002F4.btrfs-snapshots.md",{"type":387,"value":388,"toc":1162},"minimark",[389,397,422,430,435,442,445,461,464,477,481,497,564,572,576,593,643,667,673,699,702,726,744,817,838,842,845,870,873,887,929,933,940,953,960,977,980,996,999,1020,1030,1034,1037,1046,1127,1130,1148,1155,1158],[390,391],"ellipsis",{"blur":392,"left":393,"top":394,"width":395,"z-index":396},"140px","0px","10rem","40rem","60",[398,399,400,407,408,412,413,417,418,421],"p",{},[401,402,406],"a",{"href":403,"rel":404},"https:\u002F\u002Fbtrfs.readthedocs.io\u002F",[405],"nofollow","BTRFS"," est un système de fichiers Linux avec une fonctionnalité redoutable pour un homelab : les ",[409,410,411],"strong",{},"snapshots",". Un snapshot fige l'état exact d'un système de fichiers en un instant, à coût quasi nul, sans copier le moindre octet de données au départ. Cassez quelque chose dix minutes après un ",[414,415,416],"code",{},"apt full-upgrade",", ou écrasez le mauvais fichier ",[414,419,420],{},".env",", et vous pouvez revenir exactement à l'état d'avant, sans toucher à une sauvegarde.",[398,423,424,425,429],{},"Ce n'est pas le rôle de ",[401,426,428],{"href":427},"\u002Fserveex\u002Fadvanced\u002Fbackrest","Backrest et de la règle 3-2-1",", donc autant être précis sur la différence avant de mettre quoi que ce soit en place.",[431,432,434],"h2",{"id":433},"un-snapshot-nest-pas-une-sauvegarde","Un snapshot n'est pas une sauvegarde",[398,436,437,438,441],{},"Un snapshot vit sur le même disque que les données qu'il protège. Il est instantané, ne demande aucun réseau, et il est parfait pour annuler une bêtise que vous venez de faire, mais il ne sert strictement à rien le jour où ce disque lâche, se fait voler, ou où votre serveur part en fumée. C'est le rôle d'une vraie ",[401,439,440],{"href":427},"sauvegarde 3-2-1"," : une copie sur un support différent, idéalement hors site.",[398,443,444],{},"Voyez ça comme ça :",[446,447,448,455],"ul",{},[449,450,451,454],"li",{},[409,452,453],{},"Snapshot"," = un bouton annuler. Instantané, local, gratuit, utile seulement tant que le disque est vivant.",[449,456,457,460],{},[409,458,459],{},"Sauvegarde"," = une assurance. Plus lente, hors site, la seule chose qui survit à la mort du disque lui-même.",[398,462,463],{},"Gardez les deux. Les snapshots vous rendent serein face aux mises à jour et aux expérimentations, les sauvegardes garantissent qu'un disque mort reste un désagrément plutôt qu'une catastrophe.",[465,466,468,469,472,473,476],"note",{"to":467},"\u002Fserveex\u002Fcore\u002Finstallation#partitionnement","Ce guide suppose que la partition racine a été formatée en Btrfs pendant ",[401,470,471],{"href":467},"l'installation de Debian",". Btrfs ne peut pas être ajouté proprement à un ",[414,474,475],{},"\u002F"," déjà en ext4 après coup, c'est donc un choix à faire une seule fois, à l'installation.",[431,478,480],{"id":479},"formater-la-partition-racine-en-btrfs","Formater la partition racine en BTRFS",[398,482,483,484,488,489,492,493,496],{},"Le partitionnement ",[485,486,487],"em",{},"Assisté"," de Debian ne propose que de l'ext4. Pour obtenir du Btrfs, choisissez plutôt le partitionnement ",[485,490,491],{},"Manuel",", à la même étape que décrit ",[401,494,495],{"href":467},"le guide d'installation principal"," :",[498,499,501,506,516,520,530,534,547,551,560],"steps",{"level":500},"3",[502,503,505],"h3",{"id":504},"sélectionner-le-partitionnement-manuel","Sélectionner le partitionnement manuel",[398,507,508,509,511,512,515],{},"Sur l'écran de méthode de partitionnement, choisissez ",[485,510,491],{}," plutôt que ",[485,513,514],{},"Assisté, utiliser un disque entier",".",[502,517,519],{"id":518},"créer-une-table-de-partitions","Créer une table de partitions",[398,521,522,523,526,527,515],{},"Sélectionnez le disque, confirmez la création d'une nouvelle table de partitions vide, puis sélectionnez l'",[485,524,525],{},"ESPACE LIBRE"," obtenu et choisissez ",[485,528,529],{},"Créer une nouvelle partition",[502,531,533],{"id":532},"définir-la-taille-et-le-type-de-la-partition","Définir la taille et le type de la partition",[398,535,536,537,540,541,544,545,515],{},"Donnez à la partition le reste du disque (moins une petite partition EFI si vous êtes en UEFI, gérée comme dans une installation Assistée), et réglez ",[485,538,539],{},"Utiliser comme"," sur ",[409,542,543],{},"Système de fichiers journalisé Btrfs",", avec comme point de montage ",[414,546,475],{},[502,548,550],{"id":549},"terminer-le-partitionnement","Terminer le partitionnement",[398,552,553,556,557,515],{},[485,554,555],{},"Terminer le partitionnement et appliquer les changements",", puis confirmez avec ",[485,558,559],{},"Oui",[502,561,563],{"id":562},"terminé","Terminé !",[398,565,566,567,571],{},"Tout le reste de ",[401,568,570],{"href":569},"\u002Fserveex\u002Fcore\u002Finstallation#installer-debian","l'installeur"," reste identique.",[431,573,575],{"id":574},"installer-snapper","Installer Snapper",[398,577,578,579,582,583,588,589,592],{},"Plutôt que de jongler à la main avec des commandes ",[414,580,581],{},"btrfs subvolume"," brutes, ",[401,584,587],{"href":585,"rel":586},"https:\u002F\u002Fgithub.com\u002FopenSUSE\u002Fsnapper",[405],"Snapper"," est un petit outil qui gère tout le cycle de vie des snapshots : les créer, les ranger proprement, supprimer les anciens, et encadrer automatiquement chaque opération ",[414,590,591],{},"apt"," d'une paire de snapshots.",[594,595,601],"pre",{"className":596,"code":597,"filename":598,"language":599,"meta":600,"style":600},"language-bash shiki shiki-themes github-dark material-theme github-dark","sudo apt install snapper\nsudo snapper -c root create-config \u002F\n","Terminal","bash","",[414,602,603,622],{"__ignoreMap":600},[604,605,608,612,616,619],"span",{"class":606,"line":607},"line",1,[604,609,611],{"class":610},"sEgDM","sudo",[604,613,615],{"class":614},"s11XM"," apt",[604,617,618],{"class":614}," install",[604,620,621],{"class":614}," snapper\n",[604,623,625,627,630,634,637,640],{"class":606,"line":624},2,[604,626,611],{"class":610},[604,628,629],{"class":614}," snapper",[604,631,633],{"class":632},"sJWha"," -c",[604,635,636],{"class":614}," root",[604,638,639],{"class":614}," create-config",[604,641,642],{"class":614}," \u002F\n",[398,644,645,648,649,652,653,655,656,659,660,475,663,666],{},[414,646,647],{},"create-config"," enregistre une configuration nommée ",[414,650,651],{},"root"," pour le système de fichiers ",[414,654,475],{},", et crée un sous-volume ",[414,657,658],{},".snapshots"," dédié en dessous pour y stocker chaque snapshot, verrouillé pour root uniquement. Pas besoin de découpage ",[414,661,662],{},"@",[414,664,665],{},"@home",", ça fonctionne très bien sur le layout à sous-volume unique que le partitionnement manuel vient de créer.",[398,668,669,670,496],{},"Activez la configuration en éditant ",[414,671,672],{},"\u002Fetc\u002Fdefault\u002Fsnapper",[594,674,678],{"className":675,"code":676,"filename":672,"language":677,"meta":600,"style":600},"language-properties shiki shiki-themes github-dark material-theme github-dark","SNAPPER_CONFIGS=\"root\"\n","properties",[414,679,680],{"__ignoreMap":600},[604,681,682,686,690,694,696],{"class":606,"line":607},[604,683,685],{"class":684},"szyEh","SNAPPER_CONFIGS",[604,687,689],{"class":688},"s8jd1","=",[604,691,693],{"class":692},"s8K8j","\"",[604,695,651],{"class":614},[604,697,698],{"class":692},"\"\n",[398,700,701],{},"Puis activez les timers qui exécutent les snapshots périodiques et le nettoyage de Snapper :",[594,703,705],{"className":596,"code":704,"filename":598,"language":599,"meta":600,"style":600},"sudo systemctl enable --now snapper-timeline.timer snapper-cleanup.timer\n",[414,706,707],{"__ignoreMap":600},[604,708,709,711,714,717,720,723],{"class":606,"line":607},[604,710,611],{"class":610},[604,712,713],{"class":614}," systemctl",[604,715,716],{"class":614}," enable",[604,718,719],{"class":632}," --now",[604,721,722],{"class":614}," snapper-timeline.timer",[604,724,725],{"class":614}," snapper-cleanup.timer\n",[398,727,728,731,732,735,736,739,740,743],{},[414,729,730],{},"snapper-timeline.timer"," se déclenche ",[409,733,734],{},"toutes les heures"," par défaut, c'est fixé par l'unité elle-même, pas par une option de configuration. Chaque exécution prend un snapshot et le range dans la bonne catégorie (horaire, quotidien, mensuel, annuel) ; les réglages ",[414,737,738],{},"TIMELINE_LIMIT_*"," vus plus bas ne contrôlent que combien de snapshots de chaque catégorie survivent, pas la fréquence à laquelle ils sont pris. ",[414,741,742],{},"snapper-cleanup.timer"," tourne une fois par jour (plus une fois 10 minutes après le démarrage) pour appliquer ces limites.",[745,746,747,750,767,800],"tip",{},[398,748,749],{},"✨ Pour prendre des snapshots de chronologie à une fréquence différente, par exemple toutes les 6 heures plutôt que toutes les heures, surchargez le timer plutôt que de modifier directement le fichier d'unité du paquet :",[594,751,753],{"className":596,"code":752,"filename":598,"language":599,"meta":600,"style":600},"sudo systemctl edit snapper-timeline.timer\n",[414,754,755],{"__ignoreMap":600},[604,756,757,759,761,764],{"class":606,"line":607},[604,758,611],{"class":610},[604,760,713],{"class":614},[604,762,763],{"class":614}," edit",[604,765,766],{"class":614}," snapper-timeline.timer\n",[594,768,773],{"className":769,"code":770,"filename":771,"language":772,"meta":600,"style":600},"language-ini shiki shiki-themes github-dark material-theme github-dark","[Timer]\nOnCalendar=\nOnCalendar=*-*-* 0\u002F6:00:00\n","override.conf","ini",[414,774,775,781,789],{"__ignoreMap":600},[604,776,777],{"class":606,"line":607},[604,778,780],{"class":779},"srnIM","[Timer]\n",[604,782,783,786],{"class":606,"line":624},[604,784,785],{"class":684},"OnCalendar",[604,787,788],{"class":688},"=\n",[604,790,792,794,796],{"class":606,"line":791},3,[604,793,785],{"class":684},[604,795,689],{"class":688},[604,797,799],{"class":798},"slcoZ","*-*-* 0\u002F6:00:00\n",[398,801,802,803,806,807,810,811,813,814,515],{},"La ligne ",[414,804,805],{},"OnCalendar="," vide efface d'abord la valeur ",[414,808,809],{},"hourly"," du paquet, puisque systemd ajoute sinon les nouvelles lignes ",[414,812,785],{}," à celles déjà présentes au lieu de les remplacer. Appliquez avec ",[414,815,816],{},"sudo systemctl daemon-reload && sudo systemctl restart snapper-timeline.timer",[465,818,819,820,823,824,826,827,830,831,834,835,837],{},"Le paquet Debian embarque aussi un hook APT (",[414,821,822],{},"\u002Fetc\u002Fapt\u002Fapt.conf.d\u002F80snapper",") qui s'active dès qu'une configuration figure dans ",[414,825,685],{}," : à partir de maintenant, chaque ",[414,828,829],{},"apt install",", ",[414,832,833],{},"apt upgrade"," ou ",[414,836,416],{}," obtient automatiquement un snapshot juste avant et juste après son exécution, sans aucun effort de votre part.",[431,839,841],{"id":840},"prendre-un-snapshot","Prendre un snapshot",[398,843,844],{},"Pour tout ce qui sort du cadre d'apt, comme modifier une unité systemd ou un fichier Docker Compose, prenez-en un vous-même avec une description qui voudra vraiment dire quelque chose plus tard :",[594,846,848],{"className":596,"code":847,"filename":598,"language":599,"meta":600,"style":600},"sudo snapper create --description \"avant changement compose sur swag\"\n",[414,849,850],{"__ignoreMap":600},[604,851,852,854,856,859,862,865,868],{"class":606,"line":607},[604,853,611],{"class":610},[604,855,629],{"class":614},[604,857,858],{"class":614}," create",[604,860,861],{"class":632}," --description",[604,863,864],{"class":692}," \"",[604,866,867],{"class":614},"avant changement compose sur swag",[604,869,698],{"class":692},[398,871,872],{},"Listez-les tous avec :",[594,874,876],{"className":596,"code":875,"filename":598,"language":599,"meta":600,"style":600},"sudo snapper list\n",[414,877,878],{"__ignoreMap":600},[604,879,880,882,884],{"class":606,"line":607},[604,881,611],{"class":610},[604,883,629],{"class":614},[604,885,886],{"class":614}," list\n",[594,888,893],{"className":889,"code":890,"filename":891,"language":892,"meta":600,"style":600},"language-console shiki shiki-themes github-dark material-theme github-dark"," # | Type   | Pre # | Date                     | Description\n---+--------+-------+--------------------------+---------------------------------\n0  | single |       |                          | current\n1  | single |       | Tue 09 Sep 2026 18:30:00 | avant changement compose sur swag\n2  | pre    |       | Tue 09 Sep 2026 19:00:01 | apt install unattended-upgrades\n3  | post   | 2     | Tue 09 Sep 2026 19:00:14 | apt install unattended-upgrades\n","Output","console",[414,894,895,901,906,911,917,923],{"__ignoreMap":600},[604,896,897],{"class":606,"line":607},[604,898,900],{"class":899},"s8-mJ"," # | Type   | Pre # | Date                     | Description\n",[604,902,903],{"class":606,"line":624},[604,904,905],{"class":899},"---+--------+-------+--------------------------+---------------------------------\n",[604,907,908],{"class":606,"line":791},[604,909,910],{"class":899},"0  | single |       |                          | current\n",[604,912,914],{"class":606,"line":913},4,[604,915,916],{"class":899},"1  | single |       | Tue 09 Sep 2026 18:30:00 | avant changement compose sur swag\n",[604,918,920],{"class":606,"line":919},5,[604,921,922],{"class":899},"2  | pre    |       | Tue 09 Sep 2026 19:00:01 | apt install unattended-upgrades\n",[604,924,926],{"class":606,"line":925},6,[604,927,928],{"class":899},"3  | post   | 2     | Tue 09 Sep 2026 19:00:14 | apt install unattended-upgrades\n",[431,930,932],{"id":931},"restaurer-des-fichiers-depuis-un-snapshot","Restaurer des fichiers depuis un snapshot",[398,934,935,936,939],{},"Snapper conserve l'état complet du système de fichiers au moment du snapshot sous ",[414,937,938],{},"\u002F.snapshots\u002F\u003Cnuméro>\u002Fsnapshot",", consultable comme n'importe quel autre dossier :",[594,941,943],{"className":596,"code":942,"filename":598,"language":599,"meta":600,"style":600},"ls \u002F.snapshots\u002F1\u002Fsnapshot\u002Fetc\u002Fssh\u002F\n",[414,944,945],{"__ignoreMap":600},[604,946,947,950],{"class":606,"line":607},[604,948,949],{"class":610},"ls",[604,951,952],{"class":614}," \u002F.snapshots\u002F1\u002Fsnapshot\u002Fetc\u002Fssh\u002F\n",[398,954,955,956,959],{},"Pour voir exactement ce qui a changé entre un snapshot et le système actuel (",[414,957,958],{},"0"," désigne toujours \"l'état actuel\") avant de toucher à quoi que ce soit :",[594,961,963],{"className":596,"code":962,"filename":598,"language":599,"meta":600,"style":600},"sudo snapper status 1..0\n",[414,964,965],{"__ignoreMap":600},[604,966,967,969,971,974],{"class":606,"line":607},[604,968,611],{"class":610},[604,970,629],{"class":614},[604,972,973],{"class":614}," status",[604,975,976],{"class":614}," 1..0\n",[398,978,979],{},"Ça affiche chaque fichier créé, modifié ou supprimé depuis. Pour annuler ces changements automatiquement :",[594,981,983],{"className":596,"code":982,"filename":598,"language":599,"meta":600,"style":600},"sudo snapper undochange 1..0\n",[414,984,985],{"__ignoreMap":600},[604,986,987,989,991,994],{"class":606,"line":607},[604,988,611],{"class":610},[604,990,629],{"class":614},[604,992,993],{"class":614}," undochange",[604,995,976],{"class":614},[398,997,998],{},"Ou restaurez un seul fichier à la main, souvent le choix le plus sûr et le plus chirurgical :",[594,1000,1002],{"className":596,"code":1001,"filename":598,"language":599,"meta":600,"style":600},"sudo cp -a \u002F.snapshots\u002F1\u002Fsnapshot\u002Fetc\u002Fssh\u002Fsshd_config \u002Fetc\u002Fssh\u002Fsshd_config\n",[414,1003,1004],{"__ignoreMap":600},[604,1005,1006,1008,1011,1014,1017],{"class":606,"line":607},[604,1007,611],{"class":610},[604,1009,1010],{"class":614}," cp",[604,1012,1013],{"class":632}," -a",[604,1015,1016],{"class":614}," \u002F.snapshots\u002F1\u002Fsnapshot\u002Fetc\u002Fssh\u002Fsshd_config",[604,1018,1019],{"class":614}," \u002Fetc\u002Fssh\u002Fsshd_config\n",[465,1021,1022,1023,1026,1027,1029],{},"Ça couvre l'immense majorité des vrais accidents de homelab : une mauvaise config, un fichier supprimé, une mise à jour de paquet qui a cassé un truc. Snapper peut aussi faire un ",[414,1024,1025],{},"rollback"," de toute la partition racine vers un snapshot antérieur (il crée un nouveau sous-volume par défaut et démarre dessus au prochain redémarrage), pour un système dans un état vraiment cassé plutôt qu'un simple fichier manquant. C'est une opération plus délicate et bien plus rare, à tester une fois sur une machine où redémarrer ne vous dérange pas, avant d'en avoir vraiment besoin. Et si le disque lui-même est le problème, c'est exactement le scénario pour lequel votre sauvegarde ",[401,1028,262],{"href":427}," hors site existe.",[431,1031,1033],{"id":1032},"gérer-et-nettoyer-les-snapshots","Gérer et nettoyer les snapshots",[398,1035,1036],{},"Les snapshots sont bon marché, pas gratuits : dès que le système de fichiers actif diverge d'un snapshot, les anciens blocs qu'il référence toujours restent occupés. Sans surveillance, des mois de snapshots sur un serveur qui change beaucoup (images de conteneurs, logs) peuvent discrètement grignoter de l'espace disque réel.",[398,1038,1039,1040,1042,1043,496],{},"Le ",[414,1041,742],{}," activé plus haut nettoie déjà automatiquement, selon la configuration de ",[414,1044,1045],{},"\u002Fetc\u002Fsnapper\u002Fconfigs\u002Froot",[1047,1048,1049,1065],"table",{},[1050,1051,1052],"thead",{},[1053,1054,1055,1059,1062],"tr",{},[1056,1057,1058],"th",{},"Réglage",[1056,1060,1061],{},"Défaut",[1056,1063,1064],{},"Ce que ça fait",[1066,1067,1068,1094,1108],"tbody",{},[1053,1069,1070,1086,1091],{},[1071,1072,1073,1076,1077,1076,1080,1076,1083],"td",{},[414,1074,1075],{},"TIMELINE_LIMIT_HOURLY"," \u002F ",[414,1078,1079],{},"_DAILY",[414,1081,1082],{},"_MONTHLY",[414,1084,1085],{},"_YEARLY",[1071,1087,1088],{},[414,1089,1090],{},"10",[1071,1092,1093],{},"Combien de snapshots de chronologie garder pour chaque granularité",[1053,1095,1096,1101,1105],{},[1071,1097,1098],{},[414,1099,1100],{},"TIMELINE_LIMIT_WEEKLY",[1071,1102,1103],{},[414,1104,958],{},[1071,1106,1107],{},"Désactivé par défaut",[1053,1109,1110,1115,1120],{},[1071,1111,1112],{},[414,1113,1114],{},"NUMBER_LIMIT",[1071,1116,1117],{},[414,1118,1119],{},"50",[1071,1121,1122,1123,1126],{},"Combien de snapshots manuels (",[414,1124,1125],{},"single",") garder",[398,1128,1129],{},"Ajustez ça à votre goût, puis supprimez-en un immédiatement à la main si vous avez besoin de la place tout de suite :",[594,1131,1133],{"className":596,"code":1132,"filename":598,"language":599,"meta":600,"style":600},"sudo snapper delete 1\n",[414,1134,1135],{"__ignoreMap":600},[604,1136,1137,1139,1141,1144],{"class":606,"line":607},[604,1138,611],{"class":610},[604,1140,629],{"class":614},[604,1142,1143],{"class":614}," delete",[604,1145,1147],{"class":1146},"swwWl"," 1\n",[398,1149,1150,1151,1154],{},"Vérifiez l'usage disque réel avec ",[414,1152,1153],{},"df -h \u002F"," : les chiffres ci-dessus ne plafonnent que le nombre de snapshots, pas l'espace qu'un serveur très actif peut encore consommer entre deux nettoyages.",[398,1156,1157],{},"Et voilà : un bouton annuler automatique et permanent pour votre serveur, qui encadre discrètement chaque mise à jour et se nettoie tout seul, en tournant à côté des vraies sauvegardes que Backrest prend déjà hors site.",[1159,1160,1161],"style",{},"html pre.shiki code .sEgDM, html code.shiki .sEgDM{--shiki-light:#B392F0;--shiki-default:#FFCB6B;--shiki-dark:#B392F0}html pre.shiki code .s11XM, html code.shiki .s11XM{--shiki-light:#9ECBFF;--shiki-default:#C3E88D;--shiki-dark:#9ECBFF}html pre.shiki code .sJWha, html code.shiki .sJWha{--shiki-light:#79B8FF;--shiki-default:#C3E88D;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szyEh, html code.shiki .szyEh{--shiki-light:#F97583;--shiki-default:#F07178;--shiki-dark:#F97583}html pre.shiki code .s8jd1, html code.shiki .s8jd1{--shiki-light:#E1E4E8;--shiki-default:#89DDFF;--shiki-dark:#E1E4E8}html pre.shiki code .s8K8j, html code.shiki .s8K8j{--shiki-light:#9ECBFF;--shiki-default:#89DDFF;--shiki-dark:#9ECBFF}html pre.shiki code .srnIM, html code.shiki .srnIM{--shiki-light:#B392F0;--shiki-default:#89DDFF;--shiki-dark:#B392F0}html pre.shiki code .slcoZ, html code.shiki .slcoZ{--shiki-light:#E1E4E8;--shiki-default:#EEFFFF;--shiki-dark:#E1E4E8}html pre.shiki code .s8-mJ, html code.shiki .s8-mJ{--shiki-light:#79B8FF;--shiki-default:#EEFFFF;--shiki-dark:#79B8FF}html pre.shiki code .swwWl, html code.shiki .swwWl{--shiki-light:#79B8FF;--shiki-default:#F78C6C;--shiki-dark:#79B8FF}",{"title":600,"searchDepth":624,"depth":624,"links":1163},[1164,1165,1172,1173,1174,1175],{"id":433,"depth":624,"text":434},{"id":479,"depth":624,"text":480,"children":1166},[1167,1168,1169,1170,1171],{"id":504,"depth":791,"text":505},{"id":518,"depth":791,"text":519},{"id":532,"depth":791,"text":533},{"id":549,"depth":791,"text":550},{"id":562,"depth":791,"text":563},{"id":574,"depth":624,"text":575},{"id":840,"depth":624,"text":841},{"id":931,"depth":624,"text":932},{"id":1032,"depth":624,"text":1033},[],"Formater la partition racine de Debian en BTRFS et utiliser Snapper pour annuler instantanément une mise à jour ratée ou un mauvais changement de config, en complément local des sauvegardes 3-2-1 hors site de Backrest.","md",null,{},true,{"title":266,"description":1177},"6xOUV8zohsZrFVdWArH_yRPZgn-9d8yuraDEeeYcze8",[1185,1187],{"title":262,"path":263,"stem":264,"description":1186,"children":-1},"Installer Backrest, une interface web conviviale pour restic, et sauvegarder son serveur comme il faut avec la règle 3-2-1, vers un disque local, un autre serveur, S3 ou Backblaze B2.",{"title":270,"path":276,"stem":277,"description":1188,"icon":25,"children":-1},"Introduction à Stockeex, un projet personnel de gestion de stock et d'inventaire. Documentation en cours de rédaction.",1788956845305]