diff --git a/vackup b/vackup index d2da5a7..7cb2125 100755 --- a/vackup +++ b/vackup @@ -78,6 +78,19 @@ error() { handle_error $LINE_NUMBER $CODE } +fulldirname() { + DIRECTORY=$(dirname "$1") + + case "$DIRECTORY" in + /*) ;; + .*) ;& # fallthrough + *) DIRECTORY="$(pwd)/$DIRECTORY" ;; + esac + DIRECTORY=$(readlink -m "$DIRECTORY") + + echo "$DIRECTORY" +} + if [ -z "$1" ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]; then usage exit 0 @@ -98,12 +111,13 @@ cmd_export() { # TODO: check if file exists on host, if it does # create a option for overwrite and check if that's set -# TODO: if FILE_NAME starts with / we need to error out -# unless we can translate full file paths + + DIRECTORY=$(fulldirname "$FILE_NAME") + FILE_NAME=$(basename "$FILE_NAME") if ! docker run --rm \ -v "$VOLUME_NAME":/vackup-volume \ - -v "$(pwd)":/vackup \ + -v "$DIRECTORY":/vackup \ busybox \ tar -zcvf /vackup/"$FILE_NAME" /vackup-volume; then @@ -137,12 +151,12 @@ cmd_import() { exit 1 fi -# TODO: if FILE_NAME starts with / we need to error out -# unless we can translate full file paths + DIRECTORY=$(fulldirname "$FILE_NAME") + FILE_NAME=$(basename "$FILE_NAME") if ! docker run --rm \ -v "$VOLUME_NAME":/vackup-volume \ - -v "$(pwd)":/vackup \ + -v "$DIRECTORY":/vackup \ busybox \ tar -xvzf /vackup/"$FILE_NAME" -C /; then