Si vous êt
es un utilisateur de Docker, vous avez déjà sans doutes été contraint de rechercher une solution de sauvegarde.
Dans mon cas, je possède de nombreux containers ayant pour la plupart plusieurs volumes. J’ai donc écrit un script permettant de sauvegarder l’ensemble des volumes dans une archive afin de faciliter la migration ou la reprise d’activité.
Lien vers Github : https://github.com/quadeare/docker_volumes_backup
#!/bin/bash
# This script allows you to backup all volumes from a container in a tar.gz file
CONTAINER_NAME=$1
VOLUMES=$(docker inspect --format='{{range $vol, $path := .Config.Volumes}}{{$vol}} {{end}}' $CONTAINER_NAME)
DATE=$(date +"%d-%b-%Y_%H-%M-%S")
FILENAME=$CONTAINER_NAME"_"$DATE.tar.gz
echo "Backup docker's volume(s) from : "$CONTAINER_NAME
usage() {
echo "Usage: $0 [container name]"
exit 1
}
if [ -z $CONTAINER_NAME ]
then
echo "Error: missing container name parameter."
usage
fi
printf "\n"
echo "Pause docker container : "$CONTAINER_NAME
docker pause $CONTAINER_NAME >> /dev/null
echo "Backup datas from "$CONTAINER_NAME" container"
docker run --rm --volumes-from $CONTAINER_NAME -v $(pwd):/backup ubuntu tar -P -czf /backup/$FILENAME $VOLUMES >> /dev/null
echo "Unpause docker container : "$CONTAINER_NAME
docker unpause $CONTAINER_NAME >> /dev/null
echo "Output file name : "$FILENAME
echo "Done."
Comment faire pareil avec un data container ? il faut mettre en pause les containers qui utilise le volume donner et non le container “data”