# Pastebin kgzSW2XE #!/usr/bin/env bash # Resumes an interrupted zfs receive, displaying an accurate ETA set -euo pipefail src=foo/bar@snap dest=baz/bar host=baz rate=1500K key=/path/to/key buffersize=10G ssh-add "$key" trap "ssh-add -D" EXIT token=$(ssh "$host" zfs get -H -o value receive_resume_token "$dest") printf "token:\t$token\n" read _full _name size < <(zfs send -t "$token" -nP | grep full) printf "size:\t$size\n" sudo zfs send -t "$token" | pv -L "$rate" -s "$size" \ | ssh "$host" "mbuffer -q -m $buffersize | zfs receive -s $dest"