Created
May 29, 2024 07:53
-
-
Save emigrating/d72ada4e4f14067b79c4cb80b2034422 to your computer and use it in GitHub Desktop.
Quick and dirty VW backup script. Make sure to update/check the VAULTWARDEN and STORE paths if you use this.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| TYPE='2' | |
| VERBOSE='' | |
| STAMP=$(date +"%Y%m%d%H%M%S") | |
| VAULTWARDEN=/home/arnehelseth/docker/vaultwarden | |
| STORE=/home/arnehelseth/backups/vaultwarden | |
| FPATH=${STORE:1} | |
| BPATH='' | |
| umask 007 | |
| perform_backup() { | |
| if [ ! -d "${STORE}" ] | |
| then mkdir -p ${STORE} | |
| fi | |
| cd ${VAULTWARDEN} || { | |
| echo "cannot cd to ${VAULTWARDEN}" | |
| exit 1 | |
| } | |
| if [ $VERBOSE ]; then printf "Stopping the vaultwarden instance...\r\n"; fi | |
| docker stop vaultwarden > /dev/null || { echo "Failed to stop vaultwarden" ; exit 1 ; } | |
| if [ $VERBOSE ]; then printf "Backing up the vaultwarden database...\r\n"; fi | |
| sudo sqlite3 ./data/db.sqlite3 "VACUUM INTO '${STORE}/snap_${STAMP}_vaultwarden.sqlite3'" || { echo "Failed to backup the vaultwarden database" ; } | |
| sudo tar --transform='flags=r;s|'${FPATH}'|data|' --transform='flags=r;s|snap_'${STAMP}'_vaultwarden|db|' -czf ${STORE}/snap_${STAMP}_vaultwarden.tgz ${STORE}/snap_${STAMP}_vaultwarden.sqlite3 $BPATH &>/dev/null | |
| rm -rf ${STORE}/snap_${STAMP}_vaultwarden.sqlite3 | |
| if [ $VERBOSE ]; then printf "Restarting the vaultwarden instance..\r\n"; fi | |
| docker start vaultwarden > /dev/null || { echo "Failed to start vaultwarden" ; exit 1 ; } | |
| } | |
| print_usage() { | |
| printf "Usage:\r\n" | |
| printf " -t [1|2|3] Default: 2\r\n" | |
| printf " 1 = DB only.\r\n" | |
| printf " 2 = DB, Config and Attachements.\r\n" | |
| printf " 3 = Entire Data folder.\r\n" | |
| printf "\r\n" | |
| printf " -v Verbose. Default false\r\n" | |
| } | |
| while getopts 't:hv' flag; do | |
| case "${flag}" in | |
| t) TYPE="${OPTARG}" ;; | |
| v) VERBOSE='true' ;; | |
| h) print_usage ; exit 0 ;; | |
| *) print_usage | |
| exit 1 ;; | |
| esac | |
| done | |
| if (( $TYPE <= 0 || $TYPE >= 4 )); then | |
| print_usage | |
| fi | |
| if (( $TYPE == 1 )); then | |
| if [ $VERBOSE ]; then printf "Performing a DB backup only.\r\n"; printf $FPATH && printf "\r\n\r\n"; fi; | |
| BPATH=""; | |
| perform_backup; | |
| elif (( $TYPE == 2 )); then | |
| if [ $VERBOSE ]; then printf "Backing up DB, Config and Attachements.\r\n"; printf $FPATH && printf "\r\n\r\n"; fi; | |
| BPATH="data/attachments data/config.json data/rsa_key.pem data/rsa_key.pub.pem data/sends data/tmp" | |
| perform_backup | |
| elif (( $TYPE == 3 )); then | |
| if [ $VERBOSE ]; then printf "Backing up everything.\r\n"; printf $FPATH && printf "\r\n\r\n"; fi; | |
| BPATH="docker-compose.yaml data/attachments data/config.json data/rsa_key.pem data/rsa_key.pub.pem data/sends data/tmp data/icon_cache" | |
| perform_backup | |
| fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment