From 102b6ba816457349b807f2b3ba9852f7d56c426a Mon Sep 17 00:00:00 2001 From: Jarek Lipski Date: Sat, 13 Apr 2019 17:18:00 +0200 Subject: [PATCH] choose compression algorithm or no algorithm --- README.md | 5 +++++ volume-backup.sh | 38 +++++++++++++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 079811c..86b1d32 100644 --- a/README.md +++ b/README.md @@ -84,3 +84,8 @@ will clean and restore volume named `some_volume` from `/tmp/some_archive.tar.bz ``` docker run -v [volume-name]:/volume --rm loomchild/volume-backup backup -e [excluded-glob] - > [archive-name] ``` + +1. Use different compression algorithm for better performance + ``` + docker run -v [volume-name]:/volume --rm loomchild/volume-backup backup -c gz - > [archive-name] + ``` diff --git a/volume-backup.sh b/volume-backup.sh index c1c17d7..b36490b 100755 --- a/volume-backup.sh +++ b/volume-backup.sh @@ -4,6 +4,7 @@ usage() { >&2 echo "Usage: volume-backup [options] " >&2 echo "" >&2 echo "Options:" + >&2 echo " -c chooose compression algorithm: bz2 (default), gz and 0 (none)" >&2 echo " -e exclude files or directories (only for backup operation)" } @@ -17,7 +18,7 @@ backup() { mkdir -p `dirname /backup/$ARCHIVE` fi - tar -cjf $ARCHIVE_PATH -C /volume $TAROPTS ./ + tar -C /volume $TAROPTS -cf $ARCHIVE_PATH ./ } restore() { @@ -29,7 +30,7 @@ restore() { fi rm -rf /volume/* /volume/..?* /volume/.[!.]* - tar -C /volume/ -xjf $TAROPTS $ARCHIVE_PATH + tar -C /volume/ $TAROPTS -xf $ARCHIVE_PATH } # Needed because sometimes pty is not ready when executing docker-compose run @@ -40,16 +41,25 @@ sleep 1 OPERATION=$1 TAROPTS="" +COMPRESSION="bz2" OPTIND=2 -while getopts "h?e:" OPTION; do +while getopts "h?c:e:" OPTION; do case "$OPTION" in h|\?) usage exit 0 ;; - e) if [ -z "$OPTARG" -o "$OPERATION" != "backup" ]; then + c) + if [ -z "$OPTARG" ]; then + usage + exit 1 + fi + COMPRESSION=$OPTARG + ;; + e) + if [ -z "$OPTARG" -o "$OPERATION" != "backup" ]; then usage exit 1 fi @@ -65,11 +75,29 @@ if [ $# -lt 1 ]; then exit 1 fi +case "$COMPRESSION" in +bz2) + TAROPTS="$TAROPTS -j" + EXTENSION=.tar.bz2 + ;; +gz) + TAROPTS="$TAROPTS -z" + EXTENSION=.tar.gz + ;; +none|0) + EXTENSION=.tar + ;; +*) + usage + exit 1 + ;; +esac + if [ "$1" == "-" ]; then ARCHIVE=$1 ARCHIVE_PATH=$ARCHIVE else - ARCHIVE=${1%%.tar.bz2}.tar.bz2 + ARCHIVE=${1%%$EXTENSION}$EXTENSION ARCHIVE_PATH=/backup/$ARCHIVE fi