#! /usr/bin/env bash set -e abs_dirname () { local path="$1" local cwd cwd="$(pwd)" while [ -n "$path" ]; do cd "${path%/*}" 2>/dev/null local name="${path##*/}" path="$(resolve_link "$name" || true)" done pwd cd "$cwd" } abs_path () { local path="$1" echo "$(cd "$(abs_dirname "$path")" && pwd)/$(basename "$path")" } resolve_link () { $(type -p greadlink readlink | head -1) "$1" } resolve_dest () { local dest="$1" if [ -z "$dest" ]; then dest="$(pwd)/${volname}_$(date '+%Y-%m-%d_%H-%M-%S').tar.gz" fi dest="$(abs_path "$dest")" if [ -f "$dest" ]; then echo "ERROR: \"${dest}\" already exists." 1>&2 exit 1 fi echo "$dest" } resolve_dest_dir () { local dest="$1" local dir dir="$(dirname "$dest")" if [ ! -d "$dir" ]; then echo "ERROR: \"$dir\" is not a directory." fi echo "$dir" } help () { echo "usage: docker-volume-backup []" echo "" echo "Backs up contents of a Docker volume to a gzipped tar archive." echo "" echo "Arguments:" echo " - Name of Docker volume to backup." echo " - Optional argument to specify output filename." echo " Defaults to: ./__