Skip to content

Instantly share code, notes, and snippets.

@emigrating
Created May 29, 2024 07:53
Show Gist options
  • Select an option

  • Save emigrating/d72ada4e4f14067b79c4cb80b2034422 to your computer and use it in GitHub Desktop.

Select an option

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.
#!/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