X-Git-Url: https://code.delx.au/monosys/blobdiff_plain/2200fcd58251a4e688f80014596068c358306944..refs/heads/master:/hacks/lib-ext-backup diff --git a/hacks/lib-ext-backup b/hacks/lib-ext-backup index 9009318..4a1d119 100644 --- a/hacks/lib-ext-backup +++ b/hacks/lib-ext-backup @@ -7,6 +7,9 @@ function cryptsetup_open { fi DISKNAME="$(basename "$DEVICE")" CRYPTNAME="crypt-$DISKNAME" + if [ -L "/run/ext-backup-crypt/$CRYPTNAME" ]; then + continue + fi echo "> cryptsetup luksOpen $DEVICE $CRYPTNAME" cryptsetup luksOpen "$DEVICE" "$CRYPTNAME" --key-file "/etc/lukskeys/${DISKNAME}" mkdir -p /run/ext-backup-crypt/ @@ -48,6 +51,7 @@ function pool_export { } function pool_setup { + zpool set failmode=wait "$ZPOOLNAME" zfs set mountpoint="/mnt/$ZPOOLNAME" "$ZPOOLNAME" chmod 0700 "/mnt/$ZPOOLNAME" zfs set compression=lz4 "$ZPOOLNAME" @@ -73,11 +77,16 @@ function pool_maybe_scrub { echo "> zpool scrub $ZPOOLNAME" zpool scrub "$ZPOOLNAME" - while zpool status "$ZPOOLNAME" | grep -q "scrub in progress"; do + while zpool status "$ZPOOLNAME" | awk '/state: ONLINE|scan: scrub in progress/ {x++} END {exit x-2}'; do echo -n . sleep 60 done echo " done" + + if zpool list -H -o health "$ZPOOLNAME" | grep -qv ONLINE; then + zpool status -v "$ZPOOLNAME" + return 1 + fi } function syncoidw { @@ -95,6 +104,19 @@ function snapshot_cleanup { | xargs -rn1 zfs destroy -v } +function snapshot_convert_to_bookmarks { + local fs + local snap + + for fs in "$@"; do + for snap in $(zfs list -H -o name -t snapshot -r "$fs"); do + echo "> zfs bookmark $snap" + zfs bookmark "$snap" "${snap/@/#}" + zfs destroy "$snap" + done + done +} + function main { zfs get all -s local -H > /root/zfs-props.txt cryptsetup_open