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 -)" 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