Skip to content

Instantly share code, notes, and snippets.

@sjtosco
Last active June 14, 2025 05:26
Show Gist options
  • Save sjtosco/22f2149700cb7bc690a47ccca337ecba to your computer and use it in GitHub Desktop.
Save sjtosco/22f2149700cb7bc690a47ccca337ecba to your computer and use it in GitHub Desktop.
Proxmox ZFS scripts

Scripts for manage ZFS snapshots for Proxmox Shell

List snapshots zfs-list-snapshots.sh:

#!/bin/bash

help() {
  echo "Usage: $0 dataset"
  echo "Example: $0 tank-zfs/nas"
  echo "You must specify a dataset to list snapshots."
  echo
  echo "Available datasets:"
  zfs list -H -o name
}

if [[ $# -eq 0 || "$1" == "-h" || "$1" == "--help" ]]; then
  help
  exit 0
fi

DATASET="$1"

zfs list -t snapshot -r "$DATASET" -o name,creation -s creation

Create snapshot script zfs-snapshot.sh:

#!/bin/bash

help() {
  echo "Usage: $0 dataset"
  echo "Example: $0 tank-zfs/nas"
  echo "You must specify a dataset to snapshot."
  echo
  echo "Available datasets:"
  zfs list -H -o name
}

# Mostrar ayuda si no hay argumento o si es -h/--help
if [[ $# -eq 0 || "$1" == "-h" || "$1" == "--help" ]]; then
  help
  exit 0
fi

DATASET="$1"
DATE=$(date +%Y-%m-%d-%H%M)
SNAP_NAME="${DATASET}@manual-${DATE}"

zfs snapshot "$SNAP_NAME" && echo "Snapshot created: $SNAP_NAME" || echo "Error creating snapshot"

Delete snapshot script zfs-delete-snapshots.sh:

#!/bin/bash

# Display usage help
help() {
  echo "Usage: $0 <snapshot-name>"
  echo "Example: $0 tank-zfs/nas@manual-2025-06-06-1030"
}

# Show help if requested
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
  help
  exit 0
fi

# Require snapshot name argument
if [ -z "$1" ]; then
  echo "Error: snapshot name missing."
  help
  exit 1
fi

SNAPSHOT="$1"

# Confirm before deleting
read -p "Are you sure you want to delete snapshot $SNAPSHOT? [y/N]: " CONFIRM

if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
  zfs destroy "$SNAPSHOT" && echo "Snapshot $SNAPSHOT deleted." || echo "Error deleting snapshot."
else
  echo "Operation cancelled."
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment