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