Tareas #15
Actualizado por Pablo de la Torre Jamardo hace 11 meses
``` shell
chmod +x backup.sh restore.sh
```
backup.sh
``` shell
#!/bin/bash
# Directorio de backup
BACKUP_DIR="$HOME/docker-backup"
mkdir -p $BACKUP_DIR
# Copia de seguridad de imágenes
for container in $(docker ps -q); do
image_name=$(docker commit $container backup_image_$(date +%Y%m%d%H%M%S))
docker save -o $BACKUP_DIR/${image_name}.tar $image_name
done
# Copia de seguridad de volúmenes
for volume in $(docker volume ls -q); do
docker run --rm -v $volume:/volume -v $BACKUP_DIR:/backup ubuntu tar cvf /backup/${volume}_backup_$(date +%Y%m%d%H%M%S).tar /volume
done
echo "Copia de seguridad completada en $BACKUP_DIR."
```
restore.sh
``` shell
#!/bin/bash
# Directorio de backup
BACKUP_DIR="$HOME/docker-backup"
mkdir -p $BACKUP_DIR
# Restaurar Copia de seguridad de imágenes de contenedores
for image container in $BACKUP_DIR/*.tar; $(docker ps -q); do
echo "Restaurando imagen desde $image..." image_name=$(docker commit $container backup_image_$(date +%Y%m%d%H%M%S))
docker load -i $image save -o $BACKUP_DIR/${image_name}.tar $image_name
done
# Restaurar Copia de seguridad de volúmenes
for volume_backup volume in $BACKUP_DIR/*_backup.tar; $(docker volume ls -q); do
volume_name=$(basename $volume_backup _backup.tar)
echo "Restaurando volumen $volume_name desde $volume_backup..."
docker volume create $volume_name
docker run --rm -v $volume_name:/volume $volume:/volume -v $BACKUP_DIR:/backup ubuntu tar xvf /backup/$(basename $volume_backup) -C cvf /backup/${volume}_backup_$(date +%Y%m%d%H%M%S).tar /volume
done
# Eliminar copias de seguridad antiguas (más de 7 días)
find $BACKUP_DIR -type f -mtime +7 -name '*.tar' -exec rm {} \;
echo "Restauración completada." "Copia de seguridad completada en $BACKUP_DIR."
```
Ejecución periódica todos los días a las 7 de la mañana:
``` shell
(crontab -l ; echo "0 7 * * * $HOME/docker/backup.sh") | crontab -
```