Última atividade 1760505205

zfs_release_holds.sh Bruto
1# zfs.hold.release: $zfs_dataset $zfs_hold_name "mirror"
2# arc - archive
3# arc or mirror
4# How to check that all ZFS snapshots within a pool are without holds before destroying that pool - Server Fault - https://serverfault.com/questions/456301/how-to-check-that-all-zfs-snapshots-within-a-pool-are-without-holds-before-destr
5alias zfs.release="zfs.hold.release"
6zfs.hold.release(){
7
8zfs_dataset="${1:-""}"
9zfs_hold_name="${2:-"mirror"}"
10zfs_snapshot_userrefs="$(zfs get -Ht snapshot userrefs "$zfs_dataset" | grep -v $'\t'0 | cut -d $'\t' -f 1 )"
11zfs_snapshot_userref_count="$(zfs get -Ht snapshot userrefs "$zfs_dataset" | grep -v $'\t'0 | cut -d $'\t' -f 1 | wc -l )"
12
13echo zfs_snapshot_userref_count: $zfs_snapshot_userref_count
14if [[ -z "$zfs_snapshot_userref_count" ]] || [[ $zfs_snapshot_userref_count -lt 1 ]];then
15 echo zfs_snapshot_userref_count must be greater than 0 else exit
16 return 0
17fi
18
19snapshots=( $( echo "$zfs_snapshot_userrefs" | tr '\n' '\0' | xargs -0 zfs holds -H | grep "$zfs_hold_name" | awk '{ print $1 }' | tr '\n' ' ') )
20
21for snapshot in ${snapshots[@]}; do
22 echo sudo zfs release $zfs_hold_name $snapshot
23 sleep 1
24 sudo zfs release $zfs_hold_name $snapshot
25done
26
27}
28# ---