54 lines
1.4 KiB
Bash
Executable File
54 lines
1.4 KiB
Bash
Executable File
#!/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
|