Btrbk: Difference between revisions

From NixOS Wiki
imported>Onny
mNo edit summary
imported>Onny
Simplify instructions
Line 3: Line 3:
== Setup ==
== 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 of root filesystem snapshots using Btrbk, it is recommended to mount the root Btrfs drive with subvolume id 5 (in this example <code>/dev/sda1</code>) to a specific mountpoint where Btrbk can operate with. So in this case all subvolumes will be available as a subdirectory in <code>/btr_pool</code>.


{{file|/etc/nixos/hardware-configuration.nix|nix|<nowiki>
{{file|/etc/nixos/hardware-configuration.nix|nix|<nowiki>

Revision as of 11:16, 11 March 2023

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

Setup

When transfering backups of root filesystem snapshots using Btrbk, it is recommended to mount the root Btrfs drive with subvolume id 5 (in this example /dev/sda1) to a specific mountpoint where Btrbk can operate with. So in this case all subvolumes will be available as a subdirectory in /btr_pool.

/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.