# HG changeset patch # User Goffi # Date 1455816851 -3600 # Node ID 53a579906c32b631f9fc399181d62ee33c021461 # Parent f5067e3112ba10c05cd34b5cbfccb3bb0d99aaf6 docker(libervia_cont): added a "restore" command diff -r f5067e3112ba -r 53a579906c32 docker/libervia_cont.sh --- a/docker/libervia_cont.sh Thu Feb 18 17:35:07 2016 +0100 +++ b/docker/libervia_cont.sh Thu Feb 18 18:34:11 2016 +0100 @@ -45,7 +45,7 @@ DOCKER_EXE="docker" -USAGE="Usage: $0 [start|stop|restart|update|backup|ports|config] [ARGS...]" +USAGE="Usage: $0 [start|stop|restart|update|backup|restore|ports|config] [ARGS...]" HELP_SITE="http://wiki.goffi.org/wiki/Docker/en" HELP_MUC="sat@chat.jabberfr.org" @@ -184,6 +184,7 @@ restart) CMD=RESTART;; update) CMD=UPDATE;; backup) CMD=BACKUP;; + restore) CMD=RESTORE;; ports) CMD=PORTS;; config) CMD=CONFIG;; -v|--version) printf "$VERSION\n"; exit 0;; @@ -257,10 +258,10 @@ done printf "\n" ;; - RESTART) - printf "restarting containers...\n" - "$0" stop && "$0" start "$@" - ;; + RESTART) + printf "restarting containers...\n" + "$0" stop && "$0" start "$@" + ;; UPDATE) printf "updating images...\n" errors=0 @@ -290,6 +291,34 @@ exit 1 fi ;; + RESTORE) + if [ $# -ne 1 ]; then + printf "syntaxe is $0 restore [backup_file.tar.gz]\n" + exit 1 + fi + docker run --name $VOLUME_ALIAS $VOLUME_CONT > /dev/null 2>&1 + if [ $? -ne 0 ]; then + printf "Can't create $VOLUME_ALIAS container.\n\ +If you have an existing one, please remove it with \"docker rm $VOLUME_ALIAS\" (/!\\ it will remove *ALL* your data)\n\n\ +Hint: you can commit your container to avoid risk with \"docker commit $VOLUME_ALIAS your_committed_image_name\"\n\ + you can also rename your current data container with \"docker rename $VOLUME_ALIAS new_container_name\"\n" + exit 1 + fi + + printf "restoring $1 to $VOLUME_ALIAS container\n\n" + HOST_BACKUP_DIR="$(dirname "$1")" + if [ $HOST_BACKUP_DIR = "." ]; then + # workaround for a Docker bug (container crash if "." is used) + HOST_BACKUP_DIR=$(pwd) + fi + docker run --rm $DK_VOLUME -v "$HOST_BACKUP_DIR:/backup" debian:jessie tar zxvf "/backup/$1" -C / -h volumes + if [ $? -eq 0 ]; then + printf "\nRestore finished\n" + else + printf "\nRestore Error !\n" + exit 1 + fi + ;; PORTS) list_ports ;;