From 1c4647fafc6d0a69016ec7302b97a503053f0e10 Mon Sep 17 00:00:00 2001 From: Anpleenko Alexander Date: Sat, 29 Mar 2025 11:45:19 +0300 Subject: [PATCH] add docker-volume-snapshot --- docker-volume-snapshot | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 docker-volume-snapshot diff --git a/docker-volume-snapshot b/docker-volume-snapshot new file mode 100755 index 0000000..b327b6a --- /dev/null +++ b/docker-volume-snapshot @@ -0,0 +1,42 @@ +#!/bin/bash +set -e -o pipefail + +programname=`basename "$0"` + +display_usage() { + echo "usage: $programname (create|restore) source destination" + echo " create create snapshot file from docker volume" + echo " restore restore snapshot file to docker volume" + echo " source source path" + echo " destination destination path" + echo + echo "Tip: Supports tar's compression algorithms automatically" + echo " based on the file extention, for example .tar.gz" + echo + echo "Examples:" + echo "docker-volume-snapshot create xyz_volume xyz_volume.tar" + echo "docker-volume-snapshot create xyz_volume xyz_volume.tar.gz" + echo "docker-volume-snapshot restore xyz_volume.tar xyz_volume" + echo "docker-volume-snapshot restore xyz_volume.tar.gz xyz_volume" +} + +case "$1" in + "create") + if [[ -z "$2" || -z "$3" ]]; then display_usage; exit 1; fi + directory=`dirname "$3"` + if [ "$directory" == "." ]; then directory=$(pwd); fi + filename=`basename "$3"` + docker run --rm -v "$2:/source" -v "$directory:/dest" busybox tar cvaf "/dest/$filename" -C /source . + ;; + "restore") + if [[ -z "$2" || -z "$3" ]]; then display_usage; exit 1; fi + directory=`dirname "$2"` + if [ "$directory" == "." ]; then directory=$(pwd); fi + filename=`basename "$2"` + docker run --rm -v "$3:/dest" -v "$directory:/source" busybox tar xvf "/source/$filename" -C /dest + ;; + *) + display_usage + exit 1 # Command to come out of the program with status 1 + ;; +esac