summaryrefslogtreecommitdiff
path: root/docker_tools/docker_backup_crazy.sh
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2019-05-12 12:56:45 +0200
committerMiguel <m.i@gmx.at>2019-05-12 12:56:45 +0200
commit3ccd1cf7427768cb390527a45753e0cc32f4d609 (patch)
tree4f1c229f55b95a7b58f316cd4a92bfa759a6389c /docker_tools/docker_backup_crazy.sh
parentf1fa025404314863878546405edea0e18ff9151a (diff)
added docker tools
Diffstat (limited to 'docker_tools/docker_backup_crazy.sh')
-rwxr-xr-xdocker_tools/docker_backup_crazy.sh57
1 files changed, 57 insertions, 0 deletions
diff --git a/docker_tools/docker_backup_crazy.sh b/docker_tools/docker_backup_crazy.sh
new file mode 100755
index 0000000..a921795
--- /dev/null
+++ b/docker_tools/docker_backup_crazy.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+# Please read the README.md distributed along this script
+
+CONTAINERS=`docker ps --format '{{.Names}}'`
+
+echo ""
+echo " == BACKUP RUNNING DOCKER BINDS & VOLUMES (v0.1) == "
+echo ""
+
+for c in $CONTAINERS; do
+
+ IMAGE=`docker inspect -f '{{.Config.Image}}' $c`
+ VOLUMES=`docker inspect -f '{{range .Mounts}}{{if eq .Type "volume"}}{{println .Name}}{{end}}{{end}}' $c`
+ BINDS=`docker inspect -f '{{range .Mounts}}{{if eq .Type "bind"}}{{println .Source}}{{end}}{{end}}' $c`
+ TIMESTAMP=`date +"%Y%m%d_%H%M%S"`
+ ENVIRONMENT=`docker inspect -f '{{ range .Config.Env }}--{{println .}}{{end}}' $c`
+
+ echo " + Backing up container $c (running docker image $IMAGE)"
+ FILENAME=${TIMESTAMP}_${c}_env.txt
+ echo " +--> backing up environment variables to file: $FILENAME"
+ echo $ENVIRONMENT > $FILENAME
+
+
+ for v in $VOLUMES; do
+ FILENAME=${TIMESTAMP}_${c}_volume_${v}.tar.gz
+ echo " +--> backing up volume: $v to file: $FILENAME"
+ docker run --rm -it -v $v:/IN:ro -v `pwd`:/OUT bash tar -C /IN -czf /OUT/$FILENAME .
+ done
+
+ COUNT=0
+
+ for b in $BINDS; do
+ ((COUNT++))
+ FILENAME=${TIMESTAMP}_${c}_bind_${COUNT}.tar.gz
+
+ if [[ -d "$b" ]]
+ then
+ echo " |--> backing up bind (directory) ($COUNT): $b to file: $FILENAME"
+ docker run --rm -it -v $b:/IN:ro -v `pwd`:/OUT bash tar -C /IN -czf /OUT/$FILENAME .
+ fi
+
+ if [[ -f "$b" ]]
+ then
+ echo " |--> backing up bind (file) ($COUNT): $b to file: $FILENAME"
+ docker run --rm -it -v $(dirname $b):/IN:ro -v `pwd`:/OUT bash tar -C /IN -czf /OUT/$FILENAME $(basename $b)
+ fi
+
+ done
+
+ echo ''
+
+done
+
+
+
+