exclude files from backup

pull/17/head
Jarek Lipski 2019-04-13 13:48:27 +02:00
rodzic 0c3fddb08e
commit 82d3800b45
2 zmienionych plików z 40 dodań i 11 usunięć

Wyświetl plik

@ -75,3 +75,8 @@ will clean and restore volume named `some_volume` from `some_archive.tar.bz2` ar
```
docker ps -a --filter volume=[volume-name]
```
1. Exclude some files from the backup and output archive to stdout
```
docker run -v [volume-name]:/volume --rm loomchild/volume-backup backup -e [excluded-glob] - > [archive-name]
```

Wyświetl plik

@ -1,8 +1,10 @@
#!/bin/sh
usage() {
>&2 echo "Usage: volume-backup <backup|restore> <archive or - for stdin/stdout>"
exit 1
>&2 echo "Usage: volume-backup <backup|restore> [options] <archive or - for stdin/stdout>"
>&2 echo ""
>&2 echo "Options:"
>&2 echo " -e <glob> exclude files or directories (only for backup operation)"
}
backup() {
@ -15,7 +17,7 @@ backup() {
mkdir -p `dirname /backup/$ARCHIVE`
fi
tar -cjf $ARCHIVE_PATH -C /volume ./
tar -cjf $ARCHIVE_PATH -C /volume $TAROPTS ./
}
restore() {
@ -27,7 +29,7 @@ restore() {
fi
rm -rf /volume/* /volume/..?* /volume/.[!.]*
tar -C /volume/ -xjf $ARCHIVE_PATH
tar -C /volume/ -xjf $TAROPTS $ARCHIVE_PATH
}
# Needed because sometimes pty is not ready when executing docker-compose run
@ -35,17 +37,39 @@ restore() {
# TODO: remove after above pull request or equivalent is merged
sleep 1
if [ $# -ne 2 ]; then
usage
fi
OPERATION=$1
if [ "$2" == "-" ]; then
ARCHIVE=$2
TAROPTS=""
OPTIND=2
while getopts "h?e:" OPTION; do
case "$OPTION" in
h|\?)
usage
exit 0
;;
e) if [ -z "$OPTARG" -o "$OPERATION" != "backup" ]; then
usage
exit 1
fi
TAROPTS="$TAROPTS --exclude $OPTARG"
;;
esac
done
shift $((OPTIND - 1))
if [ $# -lt 1 ]; then
usage
exit 1
fi
if [ "$1" == "-" ]; then
ARCHIVE=$1
ARCHIVE_PATH=$ARCHIVE
else
ARCHIVE=${2%%.tar.bz2}.tar.bz2
ARCHIVE=${1%%.tar.bz2}.tar.bz2
ARCHIVE_PATH=/backup/$ARCHIVE
fi