From 8b1e76d9d71064232ae6bffe5eed94abfcd0a6ad Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 12 Jan 2025 19:55:15 -0500 Subject: [PATCH] Add a script to resume a zfs send/recv. --- nix/configuration/roles/zfs/default.nix | 8 ++++++++ .../roles/zfs/files/zfs_clone_resume.bash | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 nix/configuration/roles/zfs/files/zfs_clone_resume.bash diff --git a/nix/configuration/roles/zfs/default.nix b/nix/configuration/roles/zfs/default.nix index 9544643..94c6fcc 100644 --- a/nix/configuration/roles/zfs/default.nix +++ b/nix/configuration/roles/zfs/default.nix @@ -17,6 +17,13 @@ let (old: { buildCommand = "${old.buildCommand}\n patchShebangs $out"; + }); + zfs_clone_resume = + (pkgs.writeScriptBin "zfs_clone_resume" (builtins.readFile ./files/zfs_clone_resume.bash)) + .overrideAttrs + (old: { + buildCommand = "${old.buildCommand}\n patchShebangs $out"; + }); in { @@ -35,5 +42,6 @@ in environment.systemPackages = with pkgs; [ zfs_clone_send zfs_clone_recv + zfs_clone_resume ]; } diff --git a/nix/configuration/roles/zfs/files/zfs_clone_resume.bash b/nix/configuration/roles/zfs/files/zfs_clone_resume.bash new file mode 100644 index 0000000..8b9ddac --- /dev/null +++ b/nix/configuration/roles/zfs/files/zfs_clone_resume.bash @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# +# Resume a zfs send. +set -euo pipefail +IFS=$'\n\t' +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +function main { + local hst="$1" + local dst="$2" + local token + token=$(zfs get -H -o value receive_resume_token "$dst") + ssh "$hst" doas zfs send --verbose -t "$token" | doas zfs recv -s "$dst" + +} + +main "${@}"