Delete proxmox.sh

This commit is contained in:
HHF Technology 2024-09-30 09:15:09 +05:30
parent 3505c636da
commit 59bd25e283

View file

@ -1,127 +0,0 @@
#!/bin/bash
set -e
# Author: Husni Adil Makmur
# GitHub: https://github.com/husniadil
# This script performs backup and restore operations for Docker volumes within Proxmox LXC containers.
# Requirements:
# - Ensure that `sshpass` is installed. For installation instructions, visit: https://www.cyberciti.biz/faq/noninteractive-shell-script-ssh-password-provider/
# - Root login with a password must be enabled on the Proxmox host. Follow these steps:
# 1. Edit the `/etc/ssh/sshd_config` file and apply the following configuration settings:
# - ListenAddress 0.0.0.0
# - PasswordAuthentication yes
# - PermitRootLogin yes
# 2. Restart the SSH service using the command: `systemctl restart sshd`
# Usage:
# - To backup a volume: `./proxmox.sh backup --host <host> --user <user> --lxc <lxc_number> --volume <volume> --path <path>`
# - To restore a volume: `./proxmox.sh restore --host <host> --user <user> --lxc <lxc_number> --volume <volume> --path <path>`
# - Parameters:
# - `host`: Proxmox host IP address or hostname
# - `user`: Proxmox host username
# - `lxc`: LXC container number
# - `volume`: Name of the Docker volume
# - `path`: Path for the backup location
# Example:
# - To backup: `./proxmox.sh backup --host 192.168.0.100 --user root --lxc 100 --volume searxng_data --path /Users/husni/backup`
# > The backup file will be saved to `/Users/husni/backup/searxng_data-backup.tar.gz`.
# - To restore: `./proxmox.sh restore --host 192.168.0.100 --user root --lxc 100 --volume searxng_data --path /Users/husni/backup`
# > The backup file will be restored from `/Users/husni/backup/searxng_data-backup.tar.gz`, so please ensure that the file exists. This action will overwrite existing files within the Docker volume.
# ----------------------------
# Script starts here
# ----------------------------
# Function to prompt for SSH password securely
prompt_password() {
read -sp "Enter SSH password: " SSH_PASS
echo
}
# Function to perform backup
backup() {
PROXMOX_HOST=$1
PROXMOX_USER=$2
LXC_NUMBER=$3
DOCKER_VOLUME=$4
BACKUP_PATH=$5
echo "Starting backup from Proxmox host: $PROXMOX_HOST, LXC: $LXC_NUMBER, Docker volume: $DOCKER_VOLUME"
prompt_password
# Create backup directory if it doesn't exist
mkdir -p "$BACKUP_PATH"
# Perform the backup
sshpass -p "$SSH_PASS" ssh "$PROXMOX_USER@$PROXMOX_HOST" "mkdir -p /backup"
sshpass -p "$SSH_PASS" ssh "$PROXMOX_USER@$PROXMOX_HOST" "pct exec $LXC_NUMBER -- docker run --rm -v $DOCKER_VOLUME:/mnt/data -v /backup:/backup alpine tar czf /backup/$DOCKER_VOLUME-backup.tar.gz -C /mnt/data ."
sshpass -p "$SSH_PASS" ssh "$PROXMOX_USER@$PROXMOX_HOST" "pct pull $LXC_NUMBER /backup/$DOCKER_VOLUME-backup.tar.gz /backup/$DOCKER_VOLUME-backup.tar.gz"
sshpass -p "$SSH_PASS" scp "$PROXMOX_USER@$PROXMOX_HOST:/backup/$DOCKER_VOLUME-backup.tar.gz" "$BACKUP_PATH/"
echo "Backup completed and saved to $BACKUP_PATH"
}
# Function to perform restore
restore() {
PROXMOX_HOST=$1
PROXMOX_USER=$2
LXC_NUMBER=$3
DOCKER_VOLUME=$4
BACKUP_PATH=$5
echo "Starting restore to Proxmox host: $PROXMOX_HOST, LXC: $LXC_NUMBER, Docker volume: $DOCKER_VOLUME"
prompt_password
# Perform the restore
sshpass -p "$SSH_PASS" ssh "$PROXMOX_USER@$PROXMOX_HOST" "mkdir -p /backup"
sshpass -p "$SSH_PASS" scp "$BACKUP_PATH/$DOCKER_VOLUME-backup.tar.gz" "$PROXMOX_USER@$PROXMOX_HOST:/backup/"
sshpass -p "$SSH_PASS" ssh "$PROXMOX_USER@$PROXMOX_HOST" "pct push $LXC_NUMBER /backup/$DOCKER_VOLUME-backup.tar.gz /backup/$DOCKER_VOLUME-backup.tar.gz"
sshpass -p "$SSH_PASS" ssh "$PROXMOX_USER@$PROXMOX_HOST" "pct exec $LXC_NUMBER -- docker run --rm -v $DOCKER_VOLUME:/mnt/data -v /backup:/backup alpine tar xzf /backup/$DOCKER_VOLUME-backup.tar.gz -C /mnt/data"
echo "Restore completed from $BACKUP_PATH"
}
# Main script logic
if [ $# -lt 1 ]; then
echo "Usage: $0 {backup|restore} --host <host> --user <user> --lxc <lxc_number> --volume <volume> --path <path>"
exit 1
fi
COMMAND=$1
shift
while [ $# -gt 0 ]; do
case "$1" in
--host)
PROXMOX_HOST=$2
shift 2
;;
--user)
PROXMOX_USER=$2
shift 2
;;
--lxc)
LXC_NUMBER=$2
shift 2
;;
--volume)
DOCKER_VOLUME=$2
shift 2
;;
--path)
BACKUP_PATH=$2
shift 2
;;
*)
echo "Invalid parameter $1"
exit 1
;;
esac
done
case "$COMMAND" in
backup)
backup "$PROXMOX_HOST" "$PROXMOX_USER" "$LXC_NUMBER" "$DOCKER_VOLUME" "$BACKUP_PATH"
;;
restore)
restore "$PROXMOX_HOST" "$PROXMOX_USER" "$LXC_NUMBER" "$DOCKER_VOLUME" "$BACKUP_PATH"
;;
*)
echo "Invalid command $COMMAND"
exit 1
;;
esac