From 59df1261e0dc123c22dde588ced5c3abbf8300ca Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Fri, 22 Apr 2016 16:03:26 -0400 Subject: updated btrfs send/recv code; script to put layered seed on iso --- btrfs-receive-root.sh | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) (limited to 'btrfs-receive-root.sh') diff --git a/btrfs-receive-root.sh b/btrfs-receive-root.sh index 178fd64..175dd49 100644 --- a/btrfs-receive-root.sh +++ b/btrfs-receive-root.sh @@ -1,10 +1,7 @@ #!/bin/sh -layer_dir=/home/d/sami -seed_file=debian-live-8.4.0-amd64-standard.btrfs -layer_file=debian-live-8.4.0-amd64-standard.layer.$$.btrfs -layer_size=1000 -mountpoint=layer_dest.$$ +. sami/btrfs-functions.sh +. sami/var.sh disable_stdout() { exec 3>&1; exec >&2; } enable_stdout() { exec >&3; } @@ -14,24 +11,38 @@ with_stdout() { enable_stdout; "$@"; disable_stdout; } create_layer_filesystem() { [ ! -e "$layer_file" ] || return - mkdir -p "$mountpoint" && - dd if=/dev/zero of="$layer_file" bs=1M count="$layer_size" && - mount -o subvol=/,compress "$seed_file" "$mountpoint" && - layer_dev=$(losetup -f --show "$layer_file") && - btrfs device add "$layer_dev" "$mountpoint" && + ! mountpoint "$mountpoint" || return + mkdir -p "$mountpoint" && + sex dd if=/dev/zero of="$layer_file" bs=1M count="$layer_size" && + sex mount -o subvol=/,compress "$seed_file" "$mountpoint" && + layer_dev=$(losetup -f --show "$layer_file") && + sex btrfs device add "$layer_dev" "$mountpoint" && mount -o rw,remount "$mountpoint" } finish() { - umount "$mountpoint" && - btrfstune -S1 "$layer_file" + btrfs_replace_default_subvolume_with "$mountpoint"/"$receive_subv" && + umount "$mountpoint" && + sex btrfstune -S1 "$layer_file" && + losetup -d "$layer_dev" } -set -ex +set -e +disable_stdout + +receive_dest=$1 +receive_subv=$2 + +[ "$receive_subv" ] +[ "$receive_dest" ] + +mountpoint=$(realpath -m --relative-base=. "$receive_dest") + +seed_file=sami/debian-live-8.4.0-amd64-standard.btrfs +layer_file=sami/debian-live-8.4.0-amd64-standard.layer.$receive_subv.btrfs +layer_size=1000 -cd "$layer_dir" && -disable_stdout && -create_layer_filesystem && -with_stdout btrfs receive "$mountpoint" && +create_layer_filesystem +with_stdout sex btrfs receive "$mountpoint" finish -- cgit v1.2.3