You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.1 KiB
63 lines
2.1 KiB
#!/bin/bash
|
|
|
|
#//// GREG POUR LE GARAGE NUMERIQUE \\\\#
|
|
|
|
# Ce script fonctionne avec le docker-compose.yml du projet https://gitlab.com/greglebreton/docker.git -> branche docker-registry
|
|
# Ce script maintient un registre privée accueillant des sauvegardes de conteneurs quotidiennement de manière automatisée.
|
|
# Le delta est exprimé en jour et est effectué par comparaison entre la date du jour et la date d'enregistrement de l'image.
|
|
|
|
date=$(date +"%Y-%m-%d")
|
|
|
|
# A RENSEIGNER
|
|
## chemin vers le dossier docker cloné sans le dernier /
|
|
registryPath=""
|
|
## exemple monRegistreDocker.monDomaine.com
|
|
dockerRegistryAdress=""
|
|
## nombre de jours de sauvegarde à conserver par rapport à la date du jour (à ajuster si les sauvegardes ne sont pas quotidiennes)
|
|
max=""
|
|
## registres à ignorer
|
|
exceptions=( "container1" "container2" )
|
|
|
|
###################################################################################################
|
|
|
|
echo "docker clean start..."
|
|
|
|
## DOCKER LIST IMG REGISTRY
|
|
registry=$(ls $registryPath/registry-data/docker/registry/v2/repositories/)
|
|
|
|
## DOCKER LIST TAGS FOR EACH REPO
|
|
for repo in $registry
|
|
do
|
|
for ex in ${exceptions[@]}
|
|
do
|
|
if [ $repo == $ex ]
|
|
then
|
|
break
|
|
else
|
|
tags=$(ls $registryPath/registry-data/docker/registry/v2/repositories/$repo/_manifests/tags/)
|
|
|
|
for tag in $tags
|
|
do
|
|
datebackup=$(stat -c '%w' $registryPath/registry-data/docker/registry/v2/repositories/$repo/_manifests/tags/$tag)
|
|
gooddatebackup="${datebackup:0:10}"
|
|
|
|
echo $gooddatebackup
|
|
|
|
if [ ${tag:0:2} == "01" ]
|
|
then
|
|
break
|
|
else
|
|
let delta=($(date +%s -d $date)-$(date +%s -d $gooddatebackup))/86400
|
|
|
|
if [ $delta -gt $max ]
|
|
then
|
|
echo "$dockerRegistryAdress/$repo:$tag deleted!"
|
|
regctl tag rm $dockerRegistryAdress/$repo:$tag
|
|
fi
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
done
|
|
|
|
echo "registre nettoyé"
|
|
|