From 4022c5cdf61c3a9105b6bc6ae1e5348d24f818b0 Mon Sep 17 00:00:00 2001 From: ttionya Date: Mon, 21 Mar 2022 01:38:50 +0800 Subject: [PATCH] feat: support Rclone global flasgs (close #49) --- .env | 1 + README.md | 8 ++++++++ README_zh.md | 8 ++++++++ docker-compose.yml | 1 + scripts/backup.sh | 6 +++--- scripts/includes.sh | 9 +++++++-- 6 files changed, 28 insertions(+), 5 deletions(-) diff --git a/.env b/.env index f8df392..284206b 100644 --- a/.env +++ b/.env @@ -3,6 +3,7 @@ # RCLONE_REMOTE_NAME="BitwardenBackup" # RCLONE_REMOTE_DIR="/BitwardenBackup/" +# RCLONE_GLOBAL_FLAG="" # CRON="5 * * * *" # ZIP_ENABLE="TRUE" # ZIP_PASSWORD="WHEREISMYPASSWORD?" diff --git a/README.md b/README.md index 5d1cdde..c8da9f3 100644 --- a/README.md +++ b/README.md @@ -232,6 +232,14 @@ Folder for storing backup files in the storage system. Default: `/BitwardenBackup/` +#### RCLONE_GLOBAL_FLAG + +Rclone global flags, see [flags](https://rclone.org/flags/). + +**Do not add flags that change the output, such as `-P`, which will affect the deletion of outdated backup files.** + +Default: `''` + #### CRON Schedule run backup script, based on Linux `crond`. You can test the rules [here](https://crontab.guru/#5_*_*_*_*). diff --git a/README_zh.md b/README_zh.md index ba70171..4f456a0 100644 --- a/README_zh.md +++ b/README_zh.md @@ -232,6 +232,14 @@ Rclone 远程名称,你可以自己修改命名。 默认值:`/BitwardenBackup/` +#### RCLONE_GLOBAL_FLAG + +Rclone 全局参数,详见 [flags](https://rclone.org/flags/)。 + +**不要添加会改变输出的全局参数,比如 `-P`,它会影响删除过期备份文件的操作。** + +默认值:`''` + #### CRON `crond` 的规则,它基于 Linux `crond`。你可以在 [这里](https://crontab.guru/#5_*_*_*_*) 进行测试。 diff --git a/docker-compose.yml b/docker-compose.yml index 39c0170..b723869 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,6 +19,7 @@ services: # environment: # RCLONE_REMOTE_NAME: 'BitwardenBackup' # RCLONE_REMOTE_DIR: '/BitwardenBackup/' + # RCLONE_GLOBAL_FLAG: '' # CRON: '5 * * * *' # ZIP_ENABLE: 'TRUE' # ZIP_PASSWORD: 'WHEREISMYPASSWORD?' diff --git a/scripts/backup.sh b/scripts/backup.sh index 05652cd..4c442c9 100644 --- a/scripts/backup.sh +++ b/scripts/backup.sh @@ -135,7 +135,7 @@ function upload() { exit 1 fi - rclone copy "${UPLOAD_FILE}" "${RCLONE_REMOTE}" + rclone ${RCLONE_GLOBAL_FLAG} copy "${UPLOAD_FILE}" "${RCLONE_REMOTE}" if [[ $? != 0 ]]; then color red "upload failed" @@ -149,13 +149,13 @@ function clear_history() { if [[ "${BACKUP_KEEP_DAYS}" -gt 0 ]]; then color blue "delete ${BACKUP_KEEP_DAYS} days ago backup files" - mapfile -t RCLONE_DELETE_LIST < <(rclone lsf "${RCLONE_REMOTE}" --min-age "${BACKUP_KEEP_DAYS}d") + mapfile -t RCLONE_DELETE_LIST < <(rclone ${RCLONE_GLOBAL_FLAG} lsf "${RCLONE_REMOTE}" --min-age "${BACKUP_KEEP_DAYS}d") for RCLONE_DELETE_FILE in "${RCLONE_DELETE_LIST[@]}" do color yellow "deleting \"${RCLONE_DELETE_FILE}\"" - rclone delete "${RCLONE_REMOTE}/${RCLONE_DELETE_FILE}" + rclone ${RCLONE_GLOBAL_FLAG} delete "${RCLONE_REMOTE}/${RCLONE_DELETE_FILE}" if [[ $? != 0 ]]; then color red "delete \"${RCLONE_DELETE_FILE}\" failed" fi diff --git a/scripts/includes.sh b/scripts/includes.sh index 7241d8d..373a14e 100644 --- a/scripts/includes.sh +++ b/scripts/includes.sh @@ -30,14 +30,14 @@ function color() { # None ######################################## function check_rclone_connection() { - rclone config show "${RCLONE_REMOTE_NAME}" > /dev/null 2>&1 + rclone ${RCLONE_GLOBAL_FLAG} config show "${RCLONE_REMOTE_NAME}" > /dev/null 2>&1 if [[ $? != 0 ]]; then color red "rclone configuration information not found" color blue "Please configure rclone first, check https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#backup" exit 1 fi - rclone mkdir "${RCLONE_REMOTE}" + rclone ${RCLONE_GLOBAL_FLAG} mkdir "${RCLONE_REMOTE}" if [[ $? != 0 ]]; then color red "storage system connection failure" exit 1 @@ -207,6 +207,10 @@ function init_env() { # RCLONE_REMOTE RCLONE_REMOTE=$(echo "${RCLONE_REMOTE_NAME}:${RCLONE_REMOTE_DIR}" | sed 's@\(/*\)$@@') + # RCLONE_GLOBAL_FLAG + get_env RCLONE_GLOBAL_FLAG + RCLONE_GLOBAL_FLAG="${RCLONE_GLOBAL_FLAG:-""}" + # ZIP_ENABLE get_env ZIP_ENABLE ZIP_ENABLE=$(echo "${ZIP_ENABLE}" | tr '[a-z]' '[A-Z]') @@ -260,6 +264,7 @@ function init_env() { color yellow "RCLONE_REMOTE_NAME: ${RCLONE_REMOTE_NAME}" color yellow "RCLONE_REMOTE_DIR: ${RCLONE_REMOTE_DIR}" color yellow "RCLONE_REMOTE: ${RCLONE_REMOTE}" + color yellow "RCLONE_GLOBAL_FLAG: ${RCLONE_GLOBAL_FLAG}" color yellow "ZIP_ENABLE: ${ZIP_ENABLE}" color yellow "ZIP_PASSWORD: ${#ZIP_PASSWORD} Chars" color yellow "ZIP_TYPE: ${ZIP_TYPE}"