Du möchtest also für jeden Tag ein eigenes Backup-Unterverzeichnis mit Datum haben?
Ich weiß jetzt nicht, welche Vorlage du genommen hast. Hier mal eine Anpassung von
#19 , die auch ein Backup einer Docker MySQL-DB enthält sowie jetzt zusätzlich auch den JSON-Export (erfordert root-Rechte – einfach mit # auskommentieren, wenn du es nicht brauchst).
Bash:
#!/bin/bash
# anzupassen:
BackupDir="/volume3/DEV/_test"
IgnoredContainer=( ) # nur aktive Container werden gesichert!
mysqlPW=""
BackupDays="7" # Anzahl der Tage, nach denen die Backups gelöscht werden sollen
#–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
currentBackupDir="${BackupDir%/}/$(date +%Y-%m-%d)"
[ ! -d "${currentBackupDir}" ] && mkdir "${currentBackupDir}"
for container in $(docker ps --format "{{ .Names }}"); do
if grep -q "${container}" <<< "${IgnoredContainer[@]}" ; then
echo "${container} is on ignore list. Skipping this container."
continue
else
echo "export ${container} ..."
# JSON (erfordert root-Rechte):
# https://www.synology-forum.de/threads/automatisches-erstellen-der-export-config-json-files-via-skript.108440/post-1008804
/usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container.Profile method=export version=1 outfile="${currentBackupDir}/${container}_$(date +%Y-%m-%d_%H-%M).json" name="${container}" > /dev/null 2>&1
# YAML:
# https://www.synology-forum.de/threads/docker-container-automatische-docker-compose-file-erstellen-als-backup.110444/post-897496
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock red5d/docker-autocompose "${container}" > "${currentBackupDir}/${container}_$(date +%Y-%m-%d_%H-%M).yml"
fi
done
# MySQL / MariaDB in Docker sichern:
docker exec nextcloud-db /usr/bin/mysqldump -u root --password="${mysqlPW}" nextcloud > "${currentBackupDir}/nextcloud_$(date +%Y-%m-%d_%H-%M).sql"
echo "Backups rotieren ..."
find "${BackupDir}" -type f \( -name "*.json" -o -name "*.yml" -o -name "*.sql" \) -mtime +"${BackupDays}" -exec rm {} \;
# alternativ mit Rotationsskript mit gleichem Rotationsschema wie oben (https://github.com/geimist/archive_rotate):
# ./archive_rotate.sh -c -r -p="${BackupDir}" -s=* -d=*x"${BackupDays}"
# zum Schluss noch die leeren Ordner löschen:
find "${BackupDir}" -type d -empty -exec rm -r {} \;
exit 0