Explorar el Código

Add docker_volume_backup.sh

pengm01 hace 3 años
padre
commit
047348e71d
Se han modificado 1 ficheros con 32 adiciones y 0 borrados
  1. 32 0
      docker_volume_backup.sh

+ 32 - 0
docker_volume_backup.sh

@@ -0,0 +1,32 @@
+#!/bin/bash
+# Usage: ./docker_volume_backup.sh $SAVE_DIR
+# Or: curl -s https://git.immiles.com/miles/scripts/raw/master/docker_volume_backup.sh | bash -s $SAVE_DIR
+
+#set -ex
+
+SAVE_DIR=$1
+LOG_FILE=$SAVE_DIR/docker_volume_backup.log
+DATE=`date +"%Y%m%d_%H%M%S"`
+
+RETENTION=$((14*24*60))  # 2 weeks
+KEEP=7
+
+echo "--------------------------$DATE------------------------" >> $LOG_FILE
+echo "[BEGIN] Backup docker volume" >> $LOG_FILE
+
+# list and iterate volume 
+volumes=( `docker volume ls | awk '{print $2}' | tail -n +2` )
+
+for x in "${volumes[@]}"; do
+  cmd="docker run --rm -it -v $x:/src -v $SAVE_DIR:/backup alpine tar -jpcf /backup/$x_$DATE.tar.bz2 /src"
+  echo $cmd >> $LOG_FILE
+  eval $cmd
+done
+
+# Clean up
+find $SAVE_DIR -name "*.tar.bz2" -type f -printf '%T@ %p\n' -mmin +$RETENTION | sort -nr | tail -n +$KEEP | awk '{ print $2 }' | xargs -r rm >> $LOG_FILE 2>&1
+
+echo "[Finish] Backup docker volume" >> $LOG_FILE
+echo "--------------------------$DATE------------------------" >> $LOG_FILE
+
+exit 0