Init backup_incus_instances.sh
This commit is contained in:
parent
5c9da26aa5
commit
781720989c
1 changed files with 63 additions and 0 deletions
63
incus/backup_incus_instances.sh
Normal file
63
incus/backup_incus_instances.sh
Normal file
|
@ -0,0 +1,63 @@
|
|||
#!/usr/bin/env bash
|
||||
# vim: set tabstop=2 softtabstop=2 shiftwidth=2 expandtab:
|
||||
#
|
||||
# Script Name: backup_incus_instances.sh
|
||||
# Description: This script backs up all Incus instances
|
||||
# to a specified backup directory. It is designed
|
||||
# to be invoked by Borgmatic hooks.
|
||||
#
|
||||
# Author: Benoit <forgejo@benoit.jp.net>
|
||||
# Website: benoit.jp.net
|
||||
# License: MIT
|
||||
#
|
||||
# Dependencies: incus
|
||||
# Written with the help of ChatGPT
|
||||
#
|
||||
|
||||
# Strict mode
|
||||
set -euo pipefail
|
||||
|
||||
# Set the backup directory
|
||||
BACKUP_DIR="/var/backups/incus"
|
||||
|
||||
# Create the backup directory if it doesn't exist
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# Get the list of instances and check for errors
|
||||
instances=$(incus ls -f csv -c n 2>/dev/null)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to list storage instances." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if there are any instances to back up
|
||||
if [ -z "$instances" ]; then
|
||||
echo "No instances found to back up."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Initialize a success flag
|
||||
all_backups_successful=true
|
||||
|
||||
# Loop through each instance and back it up
|
||||
while IFS=, read -r name; do
|
||||
echo "Backing up instance: $name"
|
||||
|
||||
if incus export "$name" \
|
||||
--compression=none --optimized-storage --instance-only \
|
||||
"$BACKUP_DIR/${name}.tar" &> /dev/null; then
|
||||
|
||||
echo "Successfully backed up: $name"
|
||||
else
|
||||
echo "Error backing up instance: $name" >&2
|
||||
all_backups_successful=false
|
||||
fi
|
||||
done <<< "$instances"
|
||||
|
||||
# Final message based on backup success
|
||||
if $all_backups_successful; then
|
||||
echo "Backup completed successfully. All instances have been backed up to $BACKUP_DIR."
|
||||
else
|
||||
echo "Backup completed with errors. Some instances may not have been backed up."
|
||||
fi
|
||||
|
Loading…
Add table
Reference in a new issue