Untitled
unknown
plain_text
a year ago
976 B
13
Indexable
#!/bin/sh
SNAP_PREFIX="autosnap"
get_dataset() {
zfs list -H -o name,mountpoint | while read ds mp; do
case "$PWD" in
"$mp"/* | "$mp")
echo "$ds"
return
;;
esac
done
}
backup() {
ds=$(get_dataset) || { echo "No dataset found"; return 1; }
snap="${ds}@${SNAP_PREFIX}-$(date +%Y%m%d-%H%M%S)"
zfs snapshot "$snap" && echo "Snapshot created: $snap"
}
restore() {
ds=$(get_dataset) || { echo "No dataset found"; return 1; }
snap=$(zfs list -t snapshot -H -o name -s creation | grep "^${ds}@${SNAP_PREFIX}-" | tail -n 1)
[ -z "$snap" ] && { echo "No snapshot found"; return 1; }
echo "Rollback to $snap? This is destructive. Type 'yes' to confirm:"
read confirm
[ "$confirm" = "yes" ] && zfs rollback -r "$snap"
}
case "$1" in
backup) backup ;;
restore) restore ;;
*) echo "Usage: $0 {backup|restore}" ;;
esac
Editor is loading...
Leave a Comment