mirror of
https://github.com/m8tin/cis.git
synced 2026-06-02 14:56:58 +02:00
50 lines
1.2 KiB
Bash
Executable File
50 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
source /cis/core/base.module.sh
|
|
|
|
|
|
|
|
function listSnapshotsToDestroy() {
|
|
local _FILESYSTEM _SNAPSHOT
|
|
_SNAPSHOT="${1:?"Missing first parameter SNAPSHOT"}"
|
|
_FILESYSTEM="$(echo ${_SNAPSHOT} | cut -d@ -f1)"
|
|
readonly _FILESYSTEM _SNAPSHOT
|
|
|
|
for _CURRENT in $(zfs list -Ho name -s creation -t snapshot "${_FILESYSTEM:?"Missing first parameter FILESYSTEM"}")
|
|
do
|
|
[ -z "${_CURRENT}" ] \
|
|
&& return 1
|
|
|
|
[ "${_SNAPSHOT}" == "${_CURRENT}" ] \
|
|
&& break
|
|
|
|
echo "${_CURRENT}"
|
|
done
|
|
return 0
|
|
}
|
|
|
|
function main() {
|
|
local _SNAPSHOT
|
|
_SNAPSHOT="${1:?"Missing first parameter SNAPSHOT"}"
|
|
readonly _SNAPSHOT
|
|
|
|
! echo "${_SNAPSHOT}" | grep -q "@" \
|
|
&& echo "This is not a snapshot: ${_SNAPSHOT}" \
|
|
&& return 1
|
|
|
|
! zfs list "${_SNAPSHOT}" &> /dev/null \
|
|
&& echo "The snapshot does not exist: ${_SNAPSHOT}" \
|
|
&& return 1
|
|
|
|
listSnapshotsToDestroy "${_SNAPSHOT}" | xargs -r -p -n1 zfs destroy \
|
|
&& return 0
|
|
|
|
return 1
|
|
}
|
|
|
|
base.set SNAPSHOT "${1}" '^[-0-9a-zA-Z_/]@[-0-9a-zA-Z_:.]'
|
|
main "${SNAPSHOT:?"Missing first parameter SNAPSHOT"}" && exit 0
|
|
|
|
echo "Something went wrong."
|
|
exit 1
|
|
|