mirror of
https://github.com/kneutron/ansitest.git
synced 2025-01-30 05:02:54 +08:00
49 lines
1.4 KiB
Bash
49 lines
1.4 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# REF: https://forum.proxmox.com/threads/feature-request-button-to-delete-all-snapshots-at-once.147460/#post-666313
|
||
|
|
||
|
# Cluster version - delete all snapshots for a vm
|
||
|
# NOTE this also works on unclustered instances of pve
|
||
|
|
||
|
# Thanks to original author bbgeek17
|
||
|
# enhanced by kneutron
|
||
|
|
||
|
# USE AT YOUR OWN RISK - I TAKE NO REPSONSIBILITY FOR DATA LOSS!
|
||
|
|
||
|
# Depends: jq
|
||
|
[ $(which jq |wc -l) -eq 0 ] && apt install -y jq
|
||
|
|
||
|
# arg1 = vmid
|
||
|
if [[ $# -lt 1 ]];then
|
||
|
echo "You must provide a parameter!"
|
||
|
echo "USAGE: $0 [VMID]"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
logf=~/deleted-snapshots-cluster.log
|
||
|
|
||
|
set -u # abort on undefined var
|
||
|
|
||
|
echo "$(date) - Gathering information"
|
||
|
echo '=========='
|
||
|
VMID=$1
|
||
|
NODE=$(pvesh get /cluster/resources --type vm --output-format json \
|
||
|
|jq --argjson myvmid $VMID -r '.[]|select( .vmid == $myvmid )|.node')
|
||
|
|
||
|
# show vm info
|
||
|
(pvesh get /cluster/resources --type vm --human-readable 1 --noborder 1 |egrep "cgroup|$1") |column -t
|
||
|
|
||
|
# TODO test for interactive session
|
||
|
echo '=========='
|
||
|
echo "About to removw ALL snapshots from VM $VMID located on node $NODE - ^C to back out or Enter to proceed"
|
||
|
read
|
||
|
|
||
|
for snap in $(pvesh get /nodes/$NODE/qemu/$VMID/snapshot --output-format json \
|
||
|
|jq -r 'sort_by(.snaptime)|.[]|select(.snaptime != null)|.name'); do
|
||
|
echo "$(date) - $(id -un) - $VMID on $NODE - $snap" \
|
||
|
|tee -a $logf
|
||
|
time pvesh delete /nodes/$NODE/qemu/$VMID/snapshot/$snap
|
||
|
done
|
||
|
|
||
|
date
|