Borg backup wrapper update, config update
Add a .gitignore for all other files that can appear in this folder (.config, .cache, settings files, etc) Add backward compability check for file backup to not auto add -file for the file module unless flag is set (FILE_REPOSITORY_COMPATIBLE)
This commit is contained in:
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
.cache/
|
||||||
|
.config/
|
||||||
|
borg.backup.settings
|
||||||
|
borg.backup.*.settings
|
||||||
|
borg.backup.*.include
|
||||||
|
borg.backup.*.exclude
|
||||||
|
borg.backup.*.schema-only
|
||||||
|
borg.backup.*.init
|
||||||
9
borg.backup.file.settings-default
Executable file
9
borg.backup.file.settings-default
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
# Borg backup wrapper scripts settings: file
|
||||||
|
|
||||||
|
# rename to borg.backup.file.settings to use
|
||||||
|
|
||||||
|
# set to false to use -file, current default is "true"
|
||||||
|
#FILE_REPOSITORY_COMPATIBLE="false"
|
||||||
|
|
||||||
|
# override settings in borg.backup.settings with SUB_ prefix
|
||||||
|
# valid for BACKUP_FILE, BACKUP_SET, COMPRESSION*, KEEP_*
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
# set last edit date + time
|
# set last edit date + time
|
||||||
MODULE="file";
|
MODULE="file";
|
||||||
MODULE_VERSION="0.1.0";
|
MODULE_VERSION="1.0.0";
|
||||||
|
|
||||||
DIR="${BASH_SOURCE%/*}"
|
DIR="${BASH_SOURCE%/*}"
|
||||||
if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
|
if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
|
||||||
@@ -23,6 +23,7 @@ if [ ! -f "${BASE_FOLDER}${INCLUDE_FILE}" ]; then
|
|||||||
echo "[! $(date +'%F %T')] The include folder file ${INCLUDE_FILE} is missing";
|
echo "[! $(date +'%F %T')] The include folder file ${INCLUDE_FILE} is missing";
|
||||||
exit 1;
|
exit 1;
|
||||||
fi;
|
fi;
|
||||||
|
echo "--- [INCLUDE: $(date +'%F %T')] --[${MODULE}]------------------------------------>";
|
||||||
# folders to backup
|
# folders to backup
|
||||||
FOLDERS=();
|
FOLDERS=();
|
||||||
# this if for debug output with quoted folders
|
# this if for debug output with quoted folders
|
||||||
@@ -87,6 +88,7 @@ done<"${BASE_FOLDER}${INCLUDE_FILE}";
|
|||||||
|
|
||||||
# exclude list
|
# exclude list
|
||||||
if [ -f "${BASE_FOLDER}${EXCLUDE_FILE}" ]; then
|
if [ -f "${BASE_FOLDER}${EXCLUDE_FILE}" ]; then
|
||||||
|
echo "--- [EXCLUDE: $(date +'%F %T')] --[${MODULE}]------------------------------------>";
|
||||||
# check that the folders in that exclude file are actually valid,
|
# check that the folders in that exclude file are actually valid,
|
||||||
# remove non valid ones and warn
|
# remove non valid ones and warn
|
||||||
#TMP_EXCLUDE_FILE=$(mktemp --tmpdir ${EXCLUDE_FILE}.XXXXXXXX); # non mac
|
#TMP_EXCLUDE_FILE=$(mktemp --tmpdir ${EXCLUDE_FILE}.XXXXXXXX); # non mac
|
||||||
@@ -152,7 +154,7 @@ COMMAND=${COMMAND}${REPOSITORY}::${BACKUP_SET};
|
|||||||
. "${DIR}/borg.backup.functions.info.sh";
|
. "${DIR}/borg.backup.functions.info.sh";
|
||||||
|
|
||||||
if [ $FOLDER_OK -eq 1 ]; then
|
if [ $FOLDER_OK -eq 1 ]; then
|
||||||
echo "--- [BACKUP: $(date +'%F %T')] ------------------------------------------->";
|
echo "--- [BACKUP: $(date +'%F %T')] --[${MODULE}]------------------------------------>";
|
||||||
# show command
|
# show command
|
||||||
if [ ${DEBUG} -eq 1 ]; then
|
if [ ${DEBUG} -eq 1 ]; then
|
||||||
echo $(echo ${COMMAND} | sed -e 's/[ ][ ]*/ /g') ${FOLDERS_Q[*]};
|
echo $(echo ${COMMAND} | sed -e 's/[ ][ ]*/ /g') ${FOLDERS_Q[*]};
|
||||||
@@ -173,7 +175,7 @@ else
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
# clean up, always verbose
|
# clean up, always verbose
|
||||||
echo "--- [PRUNE : $(date +'%F %T')] ------------------------------------------->";
|
echo "--- [PRUNE : $(date +'%F %T')] --[${MODULE}]------------------------------------>";
|
||||||
# build command
|
# build command
|
||||||
COMMAND="borg prune ${OPT_REMOTE} -v -s --list ${PRUNE_DEBUG} ${KEEP_OPTIONS[*]} ${REPOSITORY}";
|
COMMAND="borg prune ${OPT_REMOTE} -v -s --list ${PRUNE_DEBUG} ${KEEP_OPTIONS[*]} ${REPOSITORY}";
|
||||||
echo "Prune repository with keep${KEEP_INFO:1}";
|
echo "Prune repository with keep${KEEP_INFO:1}";
|
||||||
|
|||||||
@@ -177,17 +177,10 @@ if [ -z "${KEEP_OPTIONS}" ]; then
|
|||||||
echo "[! $(date +'%F %T')] It seems no KEEP_* entries where set in a valid format.";
|
echo "[! $(date +'%F %T')] It seems no KEEP_* entries where set in a valid format.";
|
||||||
exit 1;
|
exit 1;
|
||||||
fi;
|
fi;
|
||||||
# set BACKUP_SET if empty, check for for DATE is set
|
# set BACKUP_SET if empty, set to Year-month-day
|
||||||
if [ -z "${BACKUP_SET}" ]; then
|
if [ -z "${BACKUP_SET}" ]; then
|
||||||
# DATE is deprecated and will be removed
|
|
||||||
if [ ! -z "${DATE}" ]; then
|
|
||||||
echo "[!] DEPRECATED: The use of DATE variable is deprecated, use BACKUP_SET instead";
|
|
||||||
BACKUP_SET="${DATE}";
|
|
||||||
else
|
|
||||||
# default
|
|
||||||
BACKUP_SET="{now:%Y-%m-%d}";
|
BACKUP_SET="{now:%Y-%m-%d}";
|
||||||
fi;
|
fi;
|
||||||
fi;
|
|
||||||
# backup set check, and there is no hour entry (%H) in the archive string
|
# backup set check, and there is no hour entry (%H) in the archive string
|
||||||
# we add T%H:%M:%S in this case, before the last }
|
# we add T%H:%M:%S in this case, before the last }
|
||||||
if [ ${BACKUP_SET_CHECK} -eq 1 ] && [[ "${BACKUP_SET}" != *"%H"* ]]; then
|
if [ ${BACKUP_SET_CHECK} -eq 1 ] && [[ "${BACKUP_SET}" != *"%H"* ]]; then
|
||||||
@@ -222,7 +215,7 @@ COMMAND_INFO="${COMMAND_EXPORT}borg info ${OPT_REMOTE} ${REPOSITORY}";
|
|||||||
# else a normal check is ok
|
# else a normal check is ok
|
||||||
# unless explicit given, check is skipped
|
# unless explicit given, check is skipped
|
||||||
if [ ${CHECK} -eq 1 ] || [ ${INIT} -eq 1 ]; then
|
if [ ${CHECK} -eq 1 ] || [ ${INIT} -eq 1 ]; then
|
||||||
echo "--- [CHECK : $(date +'%F %T')] ------------------------------------------->";
|
echo "--- [CHECK : $(date +'%F %T')] --[${MODULE}]------------------------------------>";
|
||||||
if [ ! -z "${TARGET_SERVER}" ]; then
|
if [ ! -z "${TARGET_SERVER}" ]; then
|
||||||
if [ ${DEBUG} -eq 1 ]; then
|
if [ ${DEBUG} -eq 1 ]; then
|
||||||
echo "borg info ${OPT_REMOTE} ${REPOSITORY} 2>&1|grep \"Repository ID:\"";
|
echo "borg info ${OPT_REMOTE} ${REPOSITORY} 2>&1|grep \"Repository ID:\"";
|
||||||
@@ -259,7 +252,7 @@ if [ ${CHECK} -eq 1 ] || [ ${INIT} -eq 1 ]; then
|
|||||||
fi;
|
fi;
|
||||||
fi;
|
fi;
|
||||||
if [ ${INIT} -eq 1 ] && [ ${INIT_REPOSITORY} -eq 1 ]; then
|
if [ ${INIT} -eq 1 ] && [ ${INIT_REPOSITORY} -eq 1 ]; then
|
||||||
echo "--- [INIT : $(date +'%F %T')] ------------------------------------------->";
|
echo "--- [INIT : $(date +'%F %T')] --[${MODULE}]------------------------------------>";
|
||||||
if [ ${DEBUG} -eq 1 ] || [ ${DRYRUN} -eq 1 ]; then
|
if [ ${DEBUG} -eq 1 ] || [ ${DRYRUN} -eq 1 ]; then
|
||||||
echo "borg init ${OPT_REMOTE} -e ${ENCRYPTION} ${OPT_VERBOSE} ${REPOSITORY}";
|
echo "borg init ${OPT_REMOTE} -e ${ENCRYPTION} ${OPT_VERBOSE} ${REPOSITORY}";
|
||||||
fi
|
fi
|
||||||
@@ -291,7 +284,7 @@ fi;
|
|||||||
|
|
||||||
# PRINT OUT current data, only do this if REPO exists
|
# PRINT OUT current data, only do this if REPO exists
|
||||||
if [ ${PRINT} -eq 1 ]; then
|
if [ ${PRINT} -eq 1 ]; then
|
||||||
echo "--- [PRINT : $(date +'%F %T')] ------------------------------------------->";
|
echo "--- [PRINT : $(date +'%F %T')] --[${MODULE}]------------------------------------>";
|
||||||
FORMAT="{archive} {comment:6} {start} - {end} [{id}] ({username}@{hostname}){NL}"
|
FORMAT="{archive} {comment:6} {start} - {end} [{id}] ({username}@{hostname}){NL}"
|
||||||
# show command on debug or dry run
|
# show command on debug or dry run
|
||||||
if [ ${DEBUG} -eq 1 ] || [ ${DRYRUN} -eq 1 ]; then
|
if [ ${DEBUG} -eq 1 ] || [ ${DRYRUN} -eq 1 ]; then
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
if [ ${INFO} -eq 1 ]; then
|
if [ ${INFO} -eq 1 ]; then
|
||||||
echo "--- [INFO : $(date +'%F %T')] ------------------------------------------->";
|
echo "--- [INFO : $(date +'%F %T')] --[${MODULE}]------------------------------------>";
|
||||||
# show command on debug or dry run
|
# show command on debug or dry run
|
||||||
if [ ${DEBUG} -eq 1 ] || [ ${DRYRUN} -eq 1 ]; then
|
if [ ${DEBUG} -eq 1 ] || [ ${DRYRUN} -eq 1 ]; then
|
||||||
echo "export BORG_BASE_DIR=\"${BASE_FOLDER}\";borg info ${OPT_REMOTE} ${REPOSITORY}";
|
echo "export BORG_BASE_DIR=\"${BASE_FOLDER}\";borg info ${OPT_REMOTE} ${REPOSITORY}";
|
||||||
|
|||||||
@@ -47,6 +47,11 @@ PRINT=0;
|
|||||||
# flags, set to no to disable
|
# flags, set to no to disable
|
||||||
_BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK="yes";
|
_BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK="yes";
|
||||||
_BORG_RELOCATED_REPO_ACCESS_IS_OK="yes";
|
_BORG_RELOCATED_REPO_ACCESS_IS_OK="yes";
|
||||||
|
# compatible settings
|
||||||
|
# NOTE: to keep the old .borg repository name for file module set this to true
|
||||||
|
# if set to false (future) it will add -file to the repository name like for other
|
||||||
|
# modules
|
||||||
|
FILE_REPOSITORY_COMPATIBLE="true";
|
||||||
# other variables
|
# other variables
|
||||||
TARGET_SERVER="";
|
TARGET_SERVER="";
|
||||||
REGEX="";
|
REGEX="";
|
||||||
@@ -81,7 +86,6 @@ SUB_COMPRESSION_LEVEL="";
|
|||||||
ENCRYPTION="none";
|
ENCRYPTION="none";
|
||||||
# force check always
|
# force check always
|
||||||
FORCE_CHECK="false";
|
FORCE_CHECK="false";
|
||||||
DATE=""; # to be deprecated
|
|
||||||
BACKUP_SET="";
|
BACKUP_SET="";
|
||||||
SUB_BACKUP_SET="";
|
SUB_BACKUP_SET="";
|
||||||
# for database backup only
|
# for database backup only
|
||||||
@@ -245,8 +249,6 @@ if [ -f "${BASE_FOLDER}${SETTINGS_FILE_SUB}" ]; then
|
|||||||
if [ ! -z "${SUB_BACKUP_FILE}" ]; then
|
if [ ! -z "${SUB_BACKUP_FILE}" ]; then
|
||||||
BACKUP_FILE=${SUB_BACKUP_FILE}
|
BACKUP_FILE=${SUB_BACKUP_FILE}
|
||||||
fi;
|
fi;
|
||||||
# add module name to backup file, always
|
|
||||||
BACKUP_FILE=${BACKUP_FILE/.borg/-${MODULE,,}.borg};
|
|
||||||
# if sub backup set it set, override current
|
# if sub backup set it set, override current
|
||||||
if [ ! -z "${SUB_BACKUP_SET}" ]; then
|
if [ ! -z "${SUB_BACKUP_SET}" ]; then
|
||||||
BACKUP_SET=${SUB_BACKUP_SET};
|
BACKUP_SET=${SUB_BACKUP_SET};
|
||||||
@@ -281,6 +283,11 @@ if [ -f "${BASE_FOLDER}${SETTINGS_FILE_SUB}" ]; then
|
|||||||
KEEP_WITHIN=${SUB_KEEP_WITHIN};
|
KEEP_WITHIN=${SUB_KEEP_WITHIN};
|
||||||
fi;
|
fi;
|
||||||
fi;
|
fi;
|
||||||
|
# add module name to backup file, always
|
||||||
|
# except if FILE module and FILE_REPOSITORY_COMPATIBLE="true"
|
||||||
|
if ([ "${FILE_REPOSITORY_COMPATIBLE}" = "false" ] && [ "${MODULE,,}" = "file" ]) || [ "${MODULE,,}" != "file" ]; then
|
||||||
|
BACKUP_FILE=${BACKUP_FILE/.borg/-${MODULE,,}.borg};
|
||||||
|
fi;
|
||||||
# backup file must be set
|
# backup file must be set
|
||||||
if [ -z "${BACKUP_FILE}" ]; then
|
if [ -z "${BACKUP_FILE}" ]; then
|
||||||
echo "No BACKUP_FILE set";
|
echo "No BACKUP_FILE set";
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# Borg backup wrapper scripts settings
|
# Borg backup wrapper scripts settings: MySQL
|
||||||
|
|
||||||
|
# rename to borg.backup.mysql.settings to use
|
||||||
|
|
||||||
# override settings in borg.backup.settings with SUB_ prefix
|
# override settings in borg.backup.settings with SUB_ prefix
|
||||||
# valid for BACKUP_FILE, BACKUP_SET, COMPRESSION*, KEEP_*
|
# valid for BACKUP_FILE, BACKUP_SET, COMPRESSION*, KEEP_*
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# Borg backup wrapper scripts settings
|
# Borg backup wrapper scripts settings: PostgreSQL
|
||||||
|
|
||||||
|
# rename to borg.backup.pgsql.settings to use
|
||||||
|
|
||||||
# override settings in borg.backup.settings with SUB_ prefix
|
# override settings in borg.backup.settings with SUB_ prefix
|
||||||
# valid for BACKUP_FILE, BACKUP_SET, COMPRESSION*, KEEP_*
|
# valid for BACKUP_FILE, BACKUP_SET, COMPRESSION*, KEEP_*
|
||||||
|
|||||||
Reference in New Issue
Block a user