I volumi Docker sono una parte essenziale dell’architettura containerizzata, spesso utilizzati per rendere persistenti i dati attraverso i cicli di vita del container. Per proteggersi dalla perdita di dati, è fondamentale eseguire regolarmente il backup di questi volumi. Questo articolo fornisce uno script di shell per automatizzare il processo di backup giornalieri dei volumi Docker, caricandoli su AWS S3 e ripulindo i vecchi backup.
Lo script farà quanto segue:
#!/bin/bash # Set variables BACKUP_DIR="/path/to/backup/dir" # Local backup directory S3_BUCKET="s3://your-bucket-name" # Your S3 bucket name DAYS_TO_KEEP=30 # 1. Loop over each Docker volume for VOLUME in $(docker volume ls -q); do TIMESTAMP=$(date +%Y%m%d%H%M%S) BACKUP_NAME="${VOLUME}_${TIMESTAMP}.tar.gz" # 2. Create a backup of the volume CONTAINER_ID=$(docker run -d -v ${VOLUME}:/volume busybox true) docker cp ${CONTAINER_ID}:/volume ${BACKUP_DIR}/${VOLUME} docker rm -v ${CONTAINER_ID} # 3. Compress the backup tar -czf ${BACKUP_DIR}/${BACKUP_NAME} -C ${BACKUP_DIR} ${VOLUME} rm -rf ${BACKUP_DIR}/${VOLUME} # 4. Upload the compressed backup to an S3 bucket aws s3 cp ${BACKUP_DIR}/${BACKUP_NAME} ${S3_BUCKET}/${BACKUP_NAME} done # 5. Remove local backups older than 30 days find ${BACKUP_DIR} -name "*.tar.gz" -mtime +${DAYS_TO_KEEP} -exec rm {} ; # 6. Remove S3 backups older than 30 days OLDER_THAN_DATE=$(date -d "-${DAYS_TO_KEEP} days" +%Y%m%d) aws s3 ls ${S3_BUCKET}/ | awk '{print $4}' | while read BACKUP; do BACKUP_DATE=$(echo ${BACKUP} | awk -F_ '{print $2}' | awk -F. '{print $1}') if (( ${BACKUP_DATE} -lt ${OLDER_THAN_DATE} )); then aws s3 rm ${S3_BUCKET}/${BACKUP} fi done
Salvare lo script in un file, ad esempio “docker_vol_backup.sh”..
chmod +x docker_vol_backup.sh
0 2 * * * /path/to/docker_vol_backup.sh >> /path/to/logfile.log 2>&1
Questa configurazione cron eseguirà lo script ogni giorno alle 2 del mattino e registrerà l’output in un file di registro specificato.
L’automazione del processo di backup dei volumi Docker garantisce la sicurezza dei dati e riduce al minimo l’intervento umano. Sfruttando AWS S3, i dati possono essere archiviati in un ambiente scalabile, sicuro e accessibile. La pulizia periodica dei vecchi backup sia localmente che in S3 aiuta a gestire i costi di storage e a prevenire inutili disordine. Assicurati sempre di testare le procedure di backup e ripristino in un ambiente sicuro prima di fare affidamento su di esse per i dati di produzione.