πŸ›‘οΈ Docker Volume Backup Plan to S3

βœ… Step 1: Update Your Package Sources

sudo apt-get update

βœ… Step 2: Install Prerequisites

sudo apt-get install unzip curl

βœ… Step 3: Install AWS CLI Manually


curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
  

πŸ” Get Your AWS Access Key ID & Secret Access Key

Important: Copy the secret key immediately, it won’t show again.

πŸ› οΈ Configure AWS CLI

aws configure

βœ… Create an S3 Bucket


aws s3 mb s3://my-devops-backup-bv123 --region us-east-1
aws s3 ls
  

πŸ“¦ Where Docker Stores Volume Data

/var/lib/docker/volumes/my_volume/_data/

πŸ›  Sample backup.sh Script

#!/bin/bash

VOLUME_NAME="my_volume"
TIMESTAMP=$(date +%F-%H-%M)
ARCHIVE_NAME="${VOLUME_NAME}_backup_${TIMESTAMP}.tar.gz"
ARCHIVE_PATH="/tmp/${ARCHIVE_NAME}"
S3_BUCKET="s3://my-devops-backupplan"

docker run --rm -v ${VOLUME_NAME}:/data -v /tmp:/backup alpine \
  tar czf "/backup/${ARCHIVE_NAME}" -C /data .

aws s3 cp "$ARCHIVE_PATH" "$S3_BUCKET/"
rm "$ARCHIVE_PATH"

echo "βœ… Backup complete: ${ARCHIVE_NAME} uploaded to ${S3_BUCKET}"
  
⚠️ Run with sudo if needed: sudo ./backup.sh
Make sure docker and aws configure work under the same user.

⏰ Schedule Backups with Cron

βœ… Step 1: Copy script to home and make executable


cp /mnt/c/Users/Dell\ Inspiron/Documents/GitHub/DevOps-Linux-System-Admin/backup.sh ~/backup.sh
chmod +x ~/backup.sh
  

βœ… Step 2: Edit Crontab

crontab -e

βœ… Step 3: Add Cron Job (every Monday @ 2 AM)


0 2 * * 1 /usr/bin/sudo /home/dell_inspiron/backup.sh >> /home/dell_inspiron/backup.log 2>&1
  

βœ… Step 4: Allow Passwordless Sudo for the Script


sudo visudo
# Add:
dell_inspiron ALL=(ALL) NOPASSWD: /home/dell_inspiron/backup.sh
  
βœ… All done! Your Docker volume will be backed up to S3 every Monday at 2 AM.