Proyecto

General

Perfil

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 - 
 ``` 

Atrás