]>
code.delx.au - monosys/blob - lib-ext-backup
3 function cryptsetup_open
{
4 for DEVICE
in /dev
/disk
/by-partlabel
/ext
*backup
*; do
5 if ! [ -L "$DEVICE" ]; then
8 DISKNAME
="$(basename "$DEVICE")"
9 CRYPTNAME
="crypt-$DISKNAME"
10 echo "> cryptsetup luksOpen $DEVICE $CRYPTNAME"
11 cryptsetup luksOpen
"$DEVICE" "$CRYPTNAME" --key-file "/etc/lukskeys/${DISKNAME}"
12 mkdir
-p /run
/ext-backup-crypt
/
13 ln -sf "/dev/mapper/$CRYPTNAME" /run
/ext-backup-crypt
/
17 function cryptsetup_close
{
18 for CRYPTDEVICE
in /dev
/mapper
/crypt-ext
*backup
*; do
19 if ! [ -L "$CRYPTDEVICE" ]; then
22 CRYPTNAME
="$(basename "$CRYPTDEVICE")"
23 echo "> cryptsetup luksClose $CRYPTNAME"
24 cryptsetup luksClose
"$CRYPTNAME"
25 rm -f "/run/ext-backup-crypt/$CRYPTNAME"
29 function pool_import
{
30 echo "> zpool import -d /run/ext-backup-crypt -a"
31 zpool import
-d /run
/ext-backup-crypt
-a
33 ZPOOLNAME
="$(zpool list -H -o name|grep 'ext.*backup'|head -n1)"
34 if [ -z "$ZPOOLNAME" ]; then
35 echo "Error! Could not find pool!"
39 echo "> Found: $ZPOOLNAME"
42 function pool_export
{
43 echo "> zpool export $ZPOOLNAME"
44 for _
in $
(seq 60); do
45 zpool
export "$ZPOOLNAME" && break
51 zfs
set mountpoint
="/mnt/$ZPOOLNAME" "$ZPOOLNAME"
52 chmod 0700 "/mnt/$ZPOOLNAME"
53 zfs
set compression
=lz4
"$ZPOOLNAME"
54 zfs
set devices
=off
"$ZPOOLNAME"
55 zfs
set exec=off
"$ZPOOLNAME"
56 zfs
set setuid
=off
"$ZPOOLNAME"
57 zfs
set xattr
=sa
"$ZPOOLNAME"
58 zfs
set acltype
=posixacl
"$ZPOOLNAME"
61 function pool_maybe_scrub
{
64 local last_scrub_days_ago
66 last_scrub
="$(zpool status "$ZPOOLNAME"|sed -nE 's/scan: scrub repaired.* on (.*)/\1/p')"
67 last_scrub_days_ago
=$
(((now
- $
(date --date="${last_scrub:-1970-01-01}" +%s
)) / 86400))
69 if [ $last_scrub_days_ago -lt 7 ]; then
73 echo "> zpool scrub $ZPOOLNAME"
74 zpool scrub
"$ZPOOLNAME"
76 while zpool status
"$ZPOOLNAME" |
grep -q "scrub in progress"; do
85 syncoid
"$@" --identifier "$ZPOOLNAME"
88 function snapshot_cleanup
{
89 echo "> Cleaning snapshots"
90 sanoid
--configdir=/etc
/sanoid
/ext-backup
--verbose --prune-snapshots
92 zfs list
-t snapshot
-H -o name
-r "$ZPOOLNAME" \
94 |
grep -Fv "@syncoid_$ZPOOLNAME" \
95 |
xargs -rn1 zfs destroy
-v
99 zfs get all
-s local -H > /root
/zfs-props.txt