From 1e9a58a79988c58c284b5011990bfc8bc20a1f06 Mon Sep 17 00:00:00 2001 From: Alexey Ukhov Date: Tue, 24 Mar 2020 10:20:53 +0700 Subject: [PATCH 1/2] change cp with tar --- docker_clone_volume.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) mode change 100644 => 100755 docker_clone_volume.sh diff --git a/docker_clone_volume.sh b/docker_clone_volume.sh old mode 100644 new mode 100755 index ce46efc..79175ba --- a/docker_clone_volume.sh +++ b/docker_clone_volume.sh @@ -13,7 +13,7 @@ then exit fi -if [ "$2" = "" ] +if [ "$2" = "" ] then echo "Please provide a destination volume name" exit @@ -40,11 +40,11 @@ fi echo "Creating destination volume \"$2\"..." -docker volume create --name $2 +docker volume create --name $2 echo "Copying data from source volume \"$1\" to destination volume \"$2\"..." docker run --rm \ -i \ -t \ -v $1:/from \ -v $2:/to \ - alpine ash -c "cd /from ; cp -av . /to" + alpine ash -c "cd /from && tar cf - . | (cd /to && tar xvf -)" From 197c65cdec5afafea943d2f6ab31b2f14ec8cc4e Mon Sep 17 00:00:00 2001 From: Alexey Ukhov Date: Tue, 24 Mar 2020 14:49:51 +0700 Subject: [PATCH 2/2] add export volume script --- docker_export_volume.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 docker_export_volume.sh diff --git a/docker_export_volume.sh b/docker_export_volume.sh new file mode 100755 index 0000000..4cb413b --- /dev/null +++ b/docker_export_volume.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# Author: Alexey Ukhov + +SCRIPTSRC=`readlink -f "$0" || echo "$0"` +SCRIPT_PATH=`dirname "$SCRIPTSRC" || echo .` + +#First check if the user provided all needed arguments +if [ "$1" = "" ] +then + echo "Please provide a source volume name" + exit +fi + +#Check if the source volume name does exist +docker volume inspect $1 > /dev/null 2>&1 +if [ "$?" != "0" ] +then + echo "The source volume \"$1\" does not exist" + exit +fi + +BACKUP_FOLDER=${2:-backup} +if [ ! -d "${BACKUP_FOLDER}" ] +then + echo "Create backup folder '${BACKUP_FOLDER}'" + mkdir -p ${BACKUP_FOLDER} +fi + +NOW=$(date +"%Y-%m-%d-%H-%M-%S") +BACKUP_FILE=${BACKUP_FOLDER}/$1_${NOW}.tar.gz + +echo "Export volume '$1' into file '${BACKUP_FILE}'" +docker run --rm -v $1:/from alpine ash -c 'cd /from && tar -cOzf - .' > ${BACKUP_FILE} \ No newline at end of file