feat: support 7z archive

This commit is contained in:
ttionya
2021-02-27 15:33:25 +08:00
parent 442fe217f8
commit 836f8d462f
5 changed files with 21 additions and 7 deletions

View File

@@ -7,6 +7,6 @@ LABEL "repository"="https://github.com/ttionya/BitwardenRS-Backup" \
COPY scripts/*.sh /app/
RUN chmod +x /app/*.sh \
&& apk add --no-cache bash sqlite zip heirloom-mailx tzdata
&& apk add --no-cache bash sqlite p7zip heirloom-mailx tzdata
ENTRYPOINT ["/app/entrypoint.sh"]

View File

@@ -22,6 +22,7 @@ services:
# CRON: '5 * * * *'
# ZIP_ENABLE: 'TRUE'
# ZIP_PASSWORD: 'WHEREISMYPASSWORD?'
# ZIP_TYPE: 'zip'
# BACKUP_FILE_DATE_SUFFIX: ''
# BACKUP_KEEP_DAYS: 0
# MAIL_SMTP_ENABLE: 'FALSE'

View File

@@ -15,7 +15,7 @@ function backup_init() {
# backup bitwarden_rs attachments directory
BACKUP_FILE_ATTACHMENTS="${BACKUP_DIR}/attachments.${NOW}.tar"
# backup zip file
BACKUP_FILE_ZIP="${BACKUP_DIR}/backup.${NOW}.zip"
BACKUP_FILE_ZIP="${BACKUP_DIR}/backup.${NOW}.${ZIP_TYPE}"
}
function backup_db() {
@@ -70,13 +70,17 @@ function backup_package() {
UPLOAD_FILE="${BACKUP_FILE_ZIP}"
zip -jP "${ZIP_PASSWORD}" "${BACKUP_FILE_ZIP}" "${BACKUP_DIR}"/*
if [[ "${ZIP_TYPE}" == "zip" ]]; then
7z a -tzip -mx=9 -p"${ZIP_PASSWORD}" "${BACKUP_FILE_ZIP}" "${BACKUP_DIR}"/*
else
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -p"${ZIP_PASSWORD}" "${BACKUP_FILE_ZIP}" "${BACKUP_DIR}"/*
fi
ls -lah "${BACKUP_DIR}"
color blue "display backup zip file list"
color blue "display backup ${ZIP_TYPE} file list"
zip -sf "${BACKUP_FILE_ZIP}"
7z l "${BACKUP_FILE_ZIP}"
else
color yellow "skip package backup files"

View File

@@ -125,6 +125,14 @@ function init_env() {
ZIP_PASSWORD="WHEREISMYPASSWORD?"
fi
# ZIP_TYPE
ZIP_TYPE=$(echo "${ZIP_TYPE}" | tr '[A-Z]' '[a-z]')
if [[ "${ZIP_TYPE}" == "7z" ]; then
ZIP_TYPE="7z"
else
ZIP_TYPE="zip"
fi
# BACKUP_KEEP_DAYS
local BACKUP_KEEP_DAYS_DEFAULT="0"
if [[ -z "${BACKUP_KEEP_DAYS}" ]]; then
@@ -172,6 +180,7 @@ function init_env() {
color yellow "RCLONE_REMOTE: ${RCLONE_REMOTE}"
color yellow "ZIP_ENABLE: ${ZIP_ENABLE}"
color yellow "ZIP_PASSWORD: ${#ZIP_PASSWORD} Chars"
color yellow "ZIP_TYPE: ${ZIP_TYPE}"
color yellow "BACKUP_FILE_DATE_FORMAT: ${BACKUP_FILE_DATE_FORMAT}"
color yellow "BACKUP_KEEP_DAYS: ${BACKUP_KEEP_DAYS}"
color yellow "MAIL_SMTP_ENABLE: ${MAIL_SMTP_ENABLE}"

View File

@@ -20,9 +20,9 @@ function restore_zip() {
local FIND_FILE_ATTACHMENTS
if [[ -n "${ZIP_PASSWORD}" ]]; then
unzip -P "${ZIP_PASSWORD}" "${RESTORE_FILE_ZIP}" -d "${RESTORE_EXTRACT_DIR}"
7z e -aoa -p"${ZIP_PASSWORD}" -o"${RESTORE_EXTRACT_DIR}" "${RESTORE_FILE_ZIP}"
else
unzip "${RESTORE_FILE_ZIP}" -d "${RESTORE_EXTRACT_DIR}"
7z e -aoa -o"${RESTORE_EXTRACT_DIR}" "${RESTORE_FILE_ZIP}"
fi
if [[ $? == 0 ]]; then