#!/bin/bash
# v01
# List and check LXC containers
echo "Listing all LXC containers..."
CONTAINERS=($(lxc-ls -1))
# Check if there are any containers
if [[ ${#CONTAINERS[@]} -eq 0 ]]; then
echo "There are no LXC containers."
exit 1
fi
echo "Found ${#CONTAINERS[@]} container(s): ${CONTAINERS[@]}"
echo "----------------------------------"
# Loop over each container
for LXCHOSTNAME in "${CONTAINERS[@]}"; do
echo "Processing container: $LXCHOSTNAME"
# Stop the container
echo "Stopping container $LXCHOSTNAME..."
if ! lxc-stop -n "$LXCHOSTNAME"; then
echo "Failed to stop container $LXCHOSTNAME"
continue
fi
# Create a snapshot (using default directory)
echo "Creating snapshot for $LXCHOSTNAME..."
if ! lxc-snapshot -n "$LXCHOSTNAME"; then
echo "Failed to create snapshot for $LXCHOSTNAME"
# Optionally, start the container back up if snapshot fails
lxc-start -n "$LXCHOSTNAME"
continue
fi
# Start the container
echo "Starting container $LXCHOSTNAME..."
if ! lxc-start -n "$LXCHOSTNAME"; then
echo "Failed to start container $LXCHOSTNAME"
continue
fi
# List snapshots for the container
echo "Listing snapshots for $LXCHOSTNAME..."
lxc-snapshot -n "$LXCHOSTNAME" -L
echo "----------------------------------"
echo "Finished processing $LXCHOSTNAME"
echo "=================================="
done
lxc-ls -f