π‘οΈ 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
- Log in to AWS Console
- Search for IAM
- Click "Users" > Your username
- Go to "Security credentials" tab
- Create Access Key for CLI use
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.