Skip to content

mr-ingenious/docker-backup-script

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

docker-backup-script

Simple Docker volumes backup tool

Introduction

This script queries the available docker containers on a machine, stops them, creates backups of their volumes and starts the containers again.

Prerequisites

The script relies on jq, gzip, curl and tar. It can send notifications to a Gotify server.

Usage

./backup_docker.sh [options]

Usage examples:
       ./backup_docker.sh --help
       ./backup_docker.sh --template
       ./backup_docker.sh --backup /home/user/backup_config.json

Options:
  -h, --help
         print this help and exit

  -t, --template
         print a backup config template structure with locally found docker containers

  -b config, --backup config
         perform backup with configuration

Setting up everything

Generating an initial configuration

An initial configuration can be automatically generated by invoking the script with the option -b <configfile>. The configuration must be edited to specify

  • the backup base directory (output of the script containing the backup zips),
  • the different storage directories (input for the script)
  • additionally, the notification section that allows the script to report the results. Possible options are gotify and console output
{
  "created": "2024-04-21 14:35:02",
  "backup_base_dir": "/home/user/docker/backups",
  "backup_items": [
    {
      "name": "heimdall",
      "id": "1153e2a7b0c6",
      "image": "lscr.io/linuxserver/heimdall:latest",
      "state": "running",
      "storage_dir": "/home/user/docker/heimdall/volume"
    },

...

],
  "notification": {
    "type": "gotify",
    "url": "http://my-gotify-server:88",
    "token": "mytoken"
  }
}

INFORMATION: Please note that the script must be run as root as it calls docker for controlling the starting, stopping and querying the docker containers.

Automatic task

The script can be placed anywhere in the file system. It can be invoked at given times / cycles with a cronjob, see example below.

This configuration starts a backup every day at 01:00 o'clock:

0 1 * * * /bin/bash /home/user/scripts/backup_docker.sh -b /home/user/scripts/backup_config.json

About

Simple Docker volumes backup script

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages