Aggiunto script del backup nel file volumebk.md
This commit is contained in:
parent
b03e8984d0
commit
be9e705ef0
|
@ -102,6 +102,72 @@ Permissions Size User Date Modified Name
|
|||
.rw-r--r-- 259 root 25 Feb 15:42 snikket-data_bk_2024-02-25.tar.gz
|
||||
```
|
||||
|
||||
## Script di esempio
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
TOPIC="nomedeltopic"
|
||||
SERVER="ntfy.server.net"
|
||||
BACKUP_DIR="/etc/snikket/backup"
|
||||
CONTAINER_LIST=$(docker container ls -q)
|
||||
# Lista di immagini con il tag 'stable'
|
||||
IMAGE_LIST=$(docker images --filter "reference=snikket/*:stable" -q)
|
||||
VOLUME_LIST=$(docker volume ls --format '{{.Name}}')
|
||||
|
||||
# Funzioni per inviare notifiche
|
||||
send_success_notification() {
|
||||
curl -H "X-Tags: tada" -H "Attach: https://yanbin.blog/wp-content/uploads/2020/03/docker-2.png" -d "Backup volume $VOLUME_NAME OK! :)" $SERVER/$TOPIC
|
||||
}
|
||||
|
||||
# Funzione per inviare notifica di errore
|
||||
send_error_notification() {
|
||||
curl -H "X-Tags: skull" -d "Backup volume $VOLUME_NAME ERROR!" $SERVER/$TOPIC
|
||||
}
|
||||
|
||||
notify_backup_removed() {
|
||||
curl -H "X-Tags: warning" -d "Some backups have been deleted" $SERVER/$TOPIC
|
||||
}
|
||||
|
||||
# Rimozione dei backup piu' vecchi di 7 giorni
|
||||
remove_old_backups() {
|
||||
if [ find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +7 -exec rm {} \; ]; then
|
||||
notify_backup_removed
|
||||
else
|
||||
echo "Nessun backup eliminato!"
|
||||
fi
|
||||
}
|
||||
|
||||
### BACKUP ####
|
||||
|
||||
cd $BACKUP_DIR
|
||||
|
||||
# Commit per ogni container nella lista
|
||||
for CONTAINER_ID in $CONTAINER_LIST; do
|
||||
docker container commit $CONTAINER_ID || send_error_notification
|
||||
done
|
||||
|
||||
# tr (translate or delete characters):
|
||||
# tr: un comando che serve per tradurre o eliminare caratteri in un flusso di dati.
|
||||
# tr '/' '-' traduce ogni carattere '/' in '-'
|
||||
|
||||
# Backup delle immagini
|
||||
for IMAGE_ID in $IMAGE_LIST; do
|
||||
# Ottieni il nome dell'immagine con il tag
|
||||
IMAGE_NAME_WITH_TAG=$(docker inspect --format='{{.RepoTags}}' $IMAGE_ID | tr -d '[] ')
|
||||
|
||||
docker image save -o $(echo $IMAGE_NAME_WITH_TAG | cut -d '/' -f 2 | tr ':' '-')_$(date +%F)_IMAGE.tar.gz $IMAGE_NAME_WITH_TAG || send_error_notification
|
||||
done
|
||||
|
||||
# Backup dei volumi
|
||||
for VOLUME_NAME in $VOLUME_LIST; do
|
||||
docker run --rm --mount source=$VOLUME_NAME,target=/$VOLUME_NAME -v $(pwd):/backup busybox tar -czvf /backup/$VOLUME_NAME\_bk_$(date +%F)_VOLUME.tar.gz /$VOLUME_NAME && send_success_notification || send_error_notification
|
||||
done
|
||||
|
||||
# Rimozione dei backup piu' vecchi di 7 giorni
|
||||
remove_old_backups
|
||||
```
|
||||
|
||||
## Collegamenti
|
||||
|
||||
- [https://docs.docker.com/desktop/backup-and-restore/](https://docs.docker.com/desktop/backup-and-restore/)
|
||||
|
|
Loading…
Reference in New Issue