Btrbk: Difference between revisions

From NixOS Wiki
imported>Onny
mNo edit summary
imported>Onny
mNo edit summary
Line 1: Line 1:
[https://digint.ch/btrbk/ Btrbk], a tool for creating snapshots and remote backups of btrfs subvolumes.
[https://digint.ch/btrbk/ Btrbk], a tool for creating snapshots and remote backups of btrfs subvolumes.


== Configuration ==
== Setup ==


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


Following example configuration will create a weekly incremental backup of a local Btrfs subvolume called <code>nixos</code> and sends it compressed to a remote host <code>myhost</code> via ssh using provided authentication credentials. Note that this references the mount point <code>/btr_pool</code> from above.
Following example configuration will create a weekly incremental backup of a local Btrfs subvolume called <code>nixos</code> and sends it compressed to a remote host <code>myhost</code> via ssh using provided authentication credentials. Note that this references the mount point <code>/btr_pool</code> from above.
Line 37: Line 39:
Note that for transport stream compression using <code>lz4</code> to work, the package must also be installed on the target host.
Note that for transport stream compression using <code>lz4</code> to work, the package must also be installed on the target host.


== Usage ==
== Manual usage ==


Manually dry running and testing a btrbk configuration
Manually dry running and testing a btrbk configuration

Revision as of 11:11, 11 March 2023

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

Setup

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" ];
  };
};

Configuration

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.

Manual usage

Manually dry running and testing a btrbk configuration

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

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