* ADD: initial commit
This commit is contained in:
132
vaultwarden-backup/app/backup.sh
Normal file
132
vaultwarden-backup/app/backup.sh
Normal file
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
. /app/includes.sh
|
||||
|
||||
function clear_dir() {
|
||||
rm -rf "${BACKUP_DIR}"
|
||||
}
|
||||
|
||||
function backup_init() {
|
||||
NOW="$(date +"${BACKUP_FILE_DATE_FORMAT}")"
|
||||
# backup vaultwarden database file (postgresql)
|
||||
BACKUP_FILE_DB_POSTGRESQL="${BACKUP_DIR}/db.${NOW}.dump"
|
||||
# backup vaultwarden config file
|
||||
BACKUP_FILE_CONFIG="${BACKUP_DIR}/config.${NOW}.json"
|
||||
# backup vaultwarden rsakey files
|
||||
BACKUP_FILE_RSAKEY="${BACKUP_DIR}/rsakey.${NOW}.tar"
|
||||
# backup vaultwarden attachments directory
|
||||
BACKUP_FILE_ATTACHMENTS="${BACKUP_DIR}/attachments.${NOW}.tar"
|
||||
# backup vaultwarden sends directory
|
||||
BACKUP_FILE_SENDS="${BACKUP_DIR}/sends.${NOW}.tar"
|
||||
# backup zip file
|
||||
BACKUP_FILE_ZIP="${BACKUP_DIR}/../backup.${NOW}.7z"
|
||||
}
|
||||
|
||||
function backup_db_postgresql() {
|
||||
echo "backup vaultwarden postgresql database"
|
||||
|
||||
pg_dump -Fc -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -d "${POSTGRES_DB}" -U "${POSTGRES_USER}" -f "${BACKUP_FILE_DB_POSTGRESQL}"
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "backup vaultwarden postgresql database failed"
|
||||
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function backup_config() {
|
||||
echo "backup vaultwarden config"
|
||||
|
||||
if [[ -f "${DATA_CONFIG}" ]]; then
|
||||
cp -f "${DATA_CONFIG}" "${BACKUP_FILE_CONFIG}"
|
||||
else
|
||||
echo "vaultwarden config not found, skipping"
|
||||
fi
|
||||
}
|
||||
|
||||
function backup_rsakey() {
|
||||
echo "backup vaultwarden rsakey"
|
||||
|
||||
local FIND_RSAKEY=$(find "${DATA_RSAKEY_DIRNAME}" -name "${DATA_RSAKEY_BASENAME}*" | xargs -I {} basename {})
|
||||
local FIND_RSAKEY_COUNT=$(echo "${FIND_RSAKEY}" | wc -l)
|
||||
|
||||
if [[ "${FIND_RSAKEY_COUNT}" -gt 0 ]]; then
|
||||
echo "${FIND_RSAKEY}" | tar -c -C "${DATA_RSAKEY_DIRNAME}" -f "${BACKUP_FILE_RSAKEY}" -T -
|
||||
|
||||
echo "display rsakey tar file list"
|
||||
|
||||
tar -tf "${BACKUP_FILE_RSAKEY}"
|
||||
else
|
||||
echo "vaultwarden rsakey not found, skipping"
|
||||
fi
|
||||
}
|
||||
|
||||
function backup_attachments() {
|
||||
echo "backup vaultwarden attachments"
|
||||
|
||||
if [[ -d "${DATA_ATTACHMENTS}" ]]; then
|
||||
tar -c -C "${DATA_ATTACHMENTS_DIRNAME}" -f "${BACKUP_FILE_ATTACHMENTS}" "${DATA_ATTACHMENTS_BASENAME}"
|
||||
|
||||
echo "display attachments tar file list"
|
||||
|
||||
tar -tf "${BACKUP_FILE_ATTACHMENTS}"
|
||||
else
|
||||
echo "vaultwarden attachments directory not found, skipping"
|
||||
fi
|
||||
}
|
||||
|
||||
function backup_sends() {
|
||||
echo "backup vaultwarden sends"
|
||||
|
||||
if [[ -d "${DATA_SENDS}" ]]; then
|
||||
tar -c -C "${DATA_SENDS_DIRNAME}" -f "${BACKUP_FILE_SENDS}" "${DATA_SENDS_BASENAME}"
|
||||
|
||||
echo "display sends tar file list"
|
||||
|
||||
tar -tf "${BACKUP_FILE_SENDS}"
|
||||
else
|
||||
echo "vaultwarden sends directory not found, skipping"
|
||||
fi
|
||||
}
|
||||
|
||||
function backup() {
|
||||
mkdir -p "${BACKUP_DIR}"
|
||||
|
||||
backup_db_postgresql
|
||||
backup_config
|
||||
backup_rsakey
|
||||
backup_attachments
|
||||
backup_sends
|
||||
|
||||
ls -lah "${BACKUP_DIR}"
|
||||
}
|
||||
|
||||
function backup_package() {
|
||||
echo "package backup file"
|
||||
|
||||
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -mhe=on "${BACKUP_FILE_ZIP}" "${BACKUP_DIR}"/*
|
||||
|
||||
ls -lah "${BACKUP_DIR}"
|
||||
|
||||
echo "display backup ${ZIP_TYPE} file list"
|
||||
|
||||
7z l "${BACKUP_FILE_ZIP}"
|
||||
|
||||
chown 1000:100 "${BACKUP_FILE_ZIP}"
|
||||
}
|
||||
|
||||
function clear_history() {
|
||||
if [[ "${BACKUP_KEEP_DAYS}" -gt 0 ]]; then
|
||||
echo find "${BACKUP_DIR}" -mtime +"${BACKUP_KEEP_DAYS}" -exec rm -rf {} \;
|
||||
fi
|
||||
}
|
||||
|
||||
echo "running the backup program at $(date +"%Y-%m-%d %H:%M:%S %Z")"
|
||||
|
||||
init_env
|
||||
|
||||
clear_dir
|
||||
backup_init
|
||||
backup
|
||||
backup_package
|
||||
clear_dir
|
||||
clear_history
|
||||
Reference in New Issue
Block a user