Btrbk

From NixOS Wiki
Revision as of 04:55, 5 February 2023 by imported>Onny

Btrbk, a tool for creating snapshots and remote backups of btrfs subvolumes.

Configuration

When transfering backups with btrbk of subvolumes used as a root filesystem, it is recommended to mount the Btrfs drive, in this example /dev/sda1 with the root subvolume id 5 to a specific mountpoint. So in this case all subvolumes will be available as a subdirectory in /btr_pool an can be accessed by btbrk.

 
/etc/nixos/hardware-configuration.nix
fileSystems = {
  "/btr_pool" = {
    device = "/dev/sda1";
    fsType = "btrfs";
    options = [ "subvolid=5" ];
  };
};

Following example configuration will create a weekly incremental backup of a local Btrfs subvolume called nixos and sends it compressed to a remote host myhost via ssh using provided authentication credentials. Note that this references the mount point /btr_pool from above.

 
/etc/nixos/configuration.nix
services.btrbk = {
  extraPackages = [ pkgs.lz4 ];
  instances.remote = {
    onCalendar = "weekly";
    settings = {
      ssh_identity = "/etc/btrbk_key";
      ssh_user = "btrbk";
      stream_compress = "lz4";
      volume."/btr_pool" = {
        target = "ssh://myhost/mnt/mybackups";
        subvolume = "nixos";
      };
    };
  };
};

Note that for transport stream compression using lz4 to work, the package must also be installed on the target host.

Usage

Manually dry running and testing a btrbk configuration

btrbk -c /etc/btrbk/remote.conf --dry-run --verbose run

The filename remote.conf references the instance name choosen in the example configuration above.