Giter Site home page Giter Site logo

restic's Introduction

docker-restic

Docker Pulls Docker layers Github Stars Github Stars Github Forks

Restic is a fantastic backup tool. To wrap this in a usefull and flexible docker container there is this repo.

Includes:

  • restic
  • cron (for scheduling)

Usage

Get latest image

You can run restic command very like this:

docker pull oursource/restic:latest
docker run --rm -e RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo" \
                -e AWS_ACCESS_KEY_ID="keyid" \
                -e AWS_SECRET_ACCESS_KEY="topsecret" \
                -e RESTIC_PASSWORD="some_good_hash" oursource/restic \
                -v /:/data
                restic snapshots

Create a docker-compose.yml

Adapt this file with your FQDN. Install docker-compose in the version 1.6 or higher.

restart: always ensures that the restic server container is automatically restarted by Docker in cases like a Docker service or host restart or container exit.

version: '2'

services:
  restic:
    restart: always
    image: oursource/restic:latest
    hostname: backup
    domainname: domain.com
    container_name: restic
    volumes:
      - /:/data
    environment:
      - RESTIC_BACKUP_OPTIONS="--exclude=/data/dir/*"
      - RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo"
      - AWS_ACCESS_KEY_ID="keyid"
      - AWS_SECRET_ACCESS_KEY="topsecret"
      - RESTIC_PASSWORD="some_good_hash"

Examples

Listed in these examples are also the defaults

to change the backup times:

For example you want to run the backup every day at 03:15.

version: '2'

services:
  restic:
    restart: always
    image: oursource/restic:latest
    hostname: backup
    domainname: domain.com
    container_name: restic
    volumes:
      - /:/data
    environment:
      - CRON_BACKUP_EXPRESSION="15   3  *   *   *"
      - RESTIC_BACKUP_OPTIONS="--exclude=/data/dir/*"
      - RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo"
      - AWS_ACCESS_KEY_ID="keyid"
      - AWS_SECRET_ACCESS_KEY="topsecret"
      - RESTIC_PASSWORD="some_good_hash"

to change the clean times and periods:

For example you want to run the backup every day at 00:00

version: '2'

services:
  restic:
    restart: always
    image: oursource/restic:latest
    hostname: backup
    domainname: domain.com
    container_name: restic
    volumes:
      - /:/data
    environment:
      - CRON_CLEANUP_EXPRESSION="0   0  *   *   *"
      - RESTIC_CLEANUP_KEEP_WEEKLY=5
      - RESTIC_CLEANUP_KEEP_MONTHLY=12
      - RESTIC_CLEANUP_KEEP_YEARLY=75
      - RESTIC_CLEANUP_OPTIONS="--prune"
      - RESTIC_BACKUP_OPTIONS="--exclude=/data/dir/*"
      - RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo"
      - AWS_ACCESS_KEY_ID="keyid"
      - AWS_SECRET_ACCESS_KEY="topsecret"
      - RESTIC_PASSWORD="some_good_hash"

Start the container

docker-compose up -d restic

You're done!


Commands to start with

A full explanation of the commands and options you can refer to the manual of restic

Initialize the repository

docker run --rm -e RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo" \
                -e AWS_ACCESS_KEY_ID="keyid" \
                -e AWS_SECRET_ACCESS_KEY="topsecret" \
                -e RESTIC_PASSWORD="some_good_hash" oursource/restic \
                -v /:/data
                restic init

List the snapshots

docker run --rm -e RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo" \
                -e AWS_ACCESS_KEY_ID="keyid" \
                -e AWS_SECRET_ACCESS_KEY="topsecret" \
                -e RESTIC_PASSWORD="some_good_hash" oursource/restic \
                -v /:/data
                restic snapshots

Restore a snapshot

docker run --rm -e RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo" \
                -e AWS_ACCESS_KEY_ID="keyid" \
                -e AWS_SECRET_ACCESS_KEY="topsecret" \
                -e RESTIC_PASSWORD="some_good_hash" oursource/restic \
                -v /:/data
                restic restore _id_ --target /data/restore_location

Start a backup now when the container is running with the name restic

docker exec restic supervisorctl start restic_backup

Run any command in the container

docker exec -ti restic _command_

Environment variables

RESTIC_BACKUP_OPTIONS

  • "" => None set by default

RESTIC_CLEANUP_KEEP_DAILY

  • 7 => to keep 7 daily backups

RESTIC_CLEANUP_KEEP_WEEKLY

  • 5 => to keep 5 daily backups

RESTIC_CLEANUP_KEEP_MONTHLY

  • 12 => to keep 12 daily backups

RESTIC_CLEANUP_KEEP_YEARLY

  • 75 => to keep 75 daily backups

RESTIC_CLEANUP_OPTIONS

  • "--prune" => Clean the repository of old backups

CRON_BACKUP_EXPRESSION

  • *"15 3 * * " => Fire at 03:15 every day

CRON_CLEANUP_EXPRESSION

  • *"15 0 0 * " => Fire at 00:15 on the first day of every month

restic's People

Contributors

johansmitsnl avatar

Watchers

Michael Gröning avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.