• CarlosCheddar@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    8 months ago

    That’s quite clever, are there any guides for getting that set up? I’m using btrfs but haven’t gotten into snapshotting yet.

    • seaQueue@lemmy.world
      link
      fedilink
      arrow-up
      10
      ·
      edit-2
      8 months ago

      Start by playing with subvolumes and snapshots so you can get a feel for how they work. Once you’ve got that down you can break down your root filesystem into sensible subvolume chunks (/, /home, /var/log, /var/cache etc) so that you only snapshot relevant content during each update. I wrote a btrbk config at that point, tested it a few times and then wrote a pacman hook to fire it on install, update or package remove events and went from there.

      Here’s what I use to take snapshots - you’ll need to write an appropriate btrbk config file for your subvolume layout but it’s otherwise feature complete. https://gitlab.com/arglebargle-arch/btrbk-autosnap

      Like I mentioned above, I haven’t actually needed to roll the system back in ages but I get a lot of mileage out of being able to reach back in time and grab old versions of files for comparison.

      Time shift is a lot easier if you’re just starting out but it also requires a specific subvolume structure and isn’t very flexible.

      Edit: pro tip: don’t make /var a separate subvolume from /, it’s way, way, way too easy to roll one or the other (/ or /var) back without the other. If you do that by accident pacman’s state becomes out of sync with the running system and everything breaks. Stick to splitting frequently rewritten data like /var/cache and /var/log off, leave /var itself in the root subvolume.