Hacker News new | ask | show | jobs
by sach1 639 days ago
That's nice and simple, do you have a shareable version of this script or some advice on btrfs pointers/pitfalls?
1 comments

It's really just those three steps in a loop, nothing fancy

    SHOT_TIME="$(date +'%Y-%m-%d_%H-%M')"
          
    for dir in /docker/*
    do
        cd $dir;
        btrfs subvolume snapshot "${dir}" "/docker/.snapshots/$(basename $dir)-${SHOT_TIME}"
        docker compose pull --quiet
        docker compose up -d
    done
I mount a btrfs subvolume at /docker, and create a .snapshots subvolume inside.

Each subvolume is an app and its dependencies, you want everything snapshotted as one. This is probably the biggest pitfall, if you don't take that snapshot of all the pieces.

    /docker
    |--> .snapshots
         |--> app_one-2024-08-28_12-34
    |--> app_one
         |--> compose.yaml
         |--> volumes
              |--> app_one-config
              |--> app_one-db
    |--> app_two
         |--> compose.yaml
         |--> volumes
              |--> app_two-config
              |--> app_two-db