diff --git a/docker/container.backup b/docker/container.backup new file mode 100755 index 0000000..4f9be9a --- /dev/null +++ b/docker/container.backup @@ -0,0 +1,66 @@ +#!/bin/sh + +# Purpose {{{ +## Backup data of a Docker container. +## To do that, the script will : +## Stop the corresponding container (or docker if no related service is found) +## Make a archive of the container's data to a backup path +## Clean old backup +## Restart the container service (or docker.service) +# }}} +# How-to use {{{ +## The container and it's data directory should have the same name. +# }}} + +# Vars {{{ +DEBUG=0 + +# }}} + +# Tests {{{ + +# Expect at least 1 argument and 3 maximum {{{ +case $# in + 1 ) + ct_name="${1}" + ## Absolut path to the container data + docker_data_path="/srv/docker" + ## Absolut path to store the archives. + ## A sub-directory will be created for the container + docker_backup_path="/mnt/backup/docker" + ;; + 2 ) + ct_name="${1}" + docker_data_path="${2}" + docker_backup_path="/mnt/backup/docker" + ;; + 3 ) + ct_name="${1}" + docker_data_path="${2}" + docker_backup_path="${3}" + ;; + * ) + cat << HELP + +container.backup -- +Backup data of a given Docker container. + +EXAMPLE : + - Backup data of FIRST_DOCK container + container.backup FIRST_DOCK + +HELP + + exit 1 + ;; +esac + + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : Args management — Container name to backup : ${ct_name} ." + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : Args management — Path to Docker data : ${docker_data_path} ." + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : Args management — Path to store the backup : ${docker_backup_path} ." + +# }}} + +# }}} + +exit 0