43 lines
973 B
Text
43 lines
973 B
Text
|
#!/usr/bin/env bash
|
||
|
# https://github.com/spherex-dev/docker-backup-volume
|
||
|
# creates a backup of the docker volume
|
||
|
|
||
|
while [ $# -gt 0 ]; do
|
||
|
case "$1" in
|
||
|
-v|-volume|--volume)
|
||
|
volume="$2"
|
||
|
;;
|
||
|
-p|-prefix|--prefix)
|
||
|
prefix="$2"
|
||
|
;;
|
||
|
-h|-help|--help)
|
||
|
printf "--volume the name of the volume\n"
|
||
|
printf "--mount the mount point of the volume\n"
|
||
|
exit 1
|
||
|
;;
|
||
|
*)
|
||
|
printf "***************************\n"
|
||
|
printf "* Error: Invalid argument.*\n"
|
||
|
printf "***************************\n"
|
||
|
exit 1
|
||
|
esac
|
||
|
shift
|
||
|
shift
|
||
|
done
|
||
|
|
||
|
uuid=$(cat /proc/sys/kernel/random/uuid)
|
||
|
if [ ! -d $prefix/$volume ]; then
|
||
|
mkdir -p $prefix/$volume
|
||
|
fi
|
||
|
|
||
|
IMAGE=alpine:latest
|
||
|
docker run \
|
||
|
--mount "type=volume,src=${volume},dst=/data" \
|
||
|
--name $uuid \
|
||
|
$IMAGE
|
||
|
|
||
|
timestamp=$(date +%Y-%m-%d_%H%M%S)
|
||
|
docker cp -a $uuid:/data /tmp/$uuid
|
||
|
tar -C /tmp/$uuid -czf $prefix/$volume/${timestamp}_${volume}.tar.gz .
|
||
|
rm -rf /tmp/$uuid
|
||
|
docker rm $uuid
|