Add script borg2-extract-archiv.sh. borg2-mount-archiv.sh: print out commands used to mount the repositories archive.

This commit is contained in:
2024-12-31 18:04:19 +01:00
parent b7ae3ac2c0
commit 20355bacae
2 changed files with 848 additions and 19 deletions

View File

@ -267,6 +267,149 @@ export BORG_RSH
#
BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
export BORG_RELOCATED_REPO_ACCESS_IS_OK
blank_line
LIST_OF_FILES_OR_DIRECTORIES=
echo -e "\033[32m--\033[m"
echo ""
echo "Specify a space-separated list of files or directories to be part of the mounted filesystem."
echo ""
echo -e " Type \"\033[33mall\033[m\" or leave emty to mount the full archive"
echo ""
echononl "List of files or directories: "
read LIST_OF_FILES_OR_DIRECTORIES
if [[ "X${LIST_OF_FILES_OR_DIRECTORIES}" = "X" ]] || [[ "$(trim ${LIST_OF_FILES_OR_DIRECTORIES,,})" = 'all' ]] ; then
LIST_OF_FILES_OR_DIRECTORIES=""
fi
blank_line
echo -e "\033[32m--\033[m"
echo ""
# List Borg Backups
#
(
source ${working_dir}/borg2-list-backups.sh
)
echo ""
echo -e " \033[33m--------------------------------------------\033[m"
echo " Which Borg Archiv shoul be mounted?"
echo ""
echo -e " \033[33mNote:\033[m it is an read-only fuse filesystem!"
echo ""
echo " Give a Borg Backup ID from above list"
echo ""
echo -n " Borg Backup ID: "
read BORG_BACKUP_ID
echo -e " \033[33m--------------------------------------------\033[m"
echo ""
blank_line
echo ""
echo ""
echo -e "\t\033[32mStart script for (readonly) mounting repository archiv '${BORG_BACKUP_ID}'..\033[m"
echo ""
echo -e "\tBORG_HOST......................: ${BORG_HOST}"
echo -e "\tBORG_REPO......................: ${BORG_REPO}"
echo ""
echo -e "\tBORG_PASSPHRASE................: ${BORG_PASSPHRASE}"
echo ""
echo -e "\tSSH_USER ......................: ${SSH_USER}"
echo -e "\tSSH_PORT.......................: ${SSH_PORT}"
echo -e "\tBORG_RSH.......................: ${BORG_RSH}"
echo ""
echo -e "\tBORG_URL.......................: ${BORG_URL}"
echo ""
echo -e "\tBORG_FUSE_MOUNT_DIR............: ${BORG_FUSE_MOUNT_DIR}"
if [[ -z "${LIST_OF_FILES_OR_DIRECTORIES}" ]]; then
echo -e "\tLIST_OF_FILES_OR_DIRECTORIES...: \033[33mMount the full archive\033[m"
else
echo -e "\tLIST_OF_FILES_OR_DIRECTORIES...: ${LIST_OF_FILES_OR_DIRECTORIES}"
fi
echo ""
echo ""
declare -i _CHOOSE
echo -e " Ho to continue?"
echo ""
echo -e " \033[1m[1] Mount files from repository $(basename "${BORG_REPO}") archive ${BORG_BACKUP_ID}\033[m"
echo -e " [2] Only print out the commands for mounting files/folders"
echo -e " [3] Exit borg2 mount script."
echo ""
echo " Type a number or press <RETURN> to choose highlighted value"
echo ""
echononl "Eingabe: "
while [[ -z "${_CHOOSE}" ]]; do
read OPTION
[[ -z "$OPTION" ]] && OPTION=1
case $OPTION in
1) _CHOOSE=1
;;
2) _CHOOSE=2
;;
3) _CHOOSE=3
;;
*)
echo ""
echo -e "\tFalsche Eingabe ! [1/2/3] or type <RETURN> for the highlited default"
echo ""
echononl "Eingabe: "
;;
esac
done
if [[ ${_CHOOSE} -gt 2 ]] ; then
echo ""
clean_up 0
elif [[ ${_CHOOSE} -gt 1 ]] ; then
_MOUNT_DIR_BACKUP_HOST="${BORG_FUSE_MOUNT_DIR}/$(basename "${BORG_REPO}")"
echo -e "\033[40m\033[37m
-----------------------------------------------------------------------------------------
export BORG_PASSPHRASE=\"${BORG_PASSPHRASE}\"
export BORG_REPO=\"${BORG_REPO}\"
export BORG_RSH=\"${BORG_RSH}\"
export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
mkdir -p \"${BORG_FUSE_MOUNT_DIR}\"
borg2 --remote-path borg2 --repo ${BORG_URL} mount -a ${BORG_BACKUP_ID} ${BORG_FUSE_MOUNT_DIR} ${LIST_OF_FILES_OR_DIRECTORIES}
On Backup Host type:
====================
export BORG_PASSPHRASE=\"${BORG_PASSPHRASE}\"
export BORG_REPO=\"${BORG_REPO}\"
export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
mkdir -p \"${_MOUNT_DIR_BACKUP_HOST}\"
borg2 --remote-path borg2 --repo ${BORG_REPO} mount -a ${BORG_BACKUP_ID} ${_MOUNT_DIR_BACKUP_HOST} ${LIST_OF_FILES_OR_DIRECTORIES}
You can find the mounted fuse archive at;
${_MOUNT_DIR_BACKUP_HOST}/${BORG_BACKUP_ID}
In Order to unmount repository archive type:
umount ${_MOUNT_DIR_BACKUP_HOST}
-----------------------------------------------------------------------------------------
\033[m\n"
clean_up 0
fi
echononl "Create Restore Directory '${BORG_FUSE_MOUNT_DIR}'."
if [ ! -d "${BORG_FUSE_MOUNT_DIR}" ]; then
@ -286,29 +429,51 @@ fi
blank_line
_MOUNT_DIR_BACKUP_HOST="${BORG_FUSE_MOUNT_DIR}/$(basename "${BORG_REPO}")"
# List Borg Backups
#
(
source ${working_dir}/borg2-list-backups.sh
)
echo -e "\033[40m\033[37m
-----------------------------------------------------------------------------------------
echo ""
echo -e " \033[33m--------------------------------------------\033[m"
echo " Which Borg Archiv shoul be mounted?"
echo ""
echo -e " \033[33mNote:\033[m it is an read-only fuse filesystem!"
echo ""
echo " Give a Borg Backup ID from above list"
echo ""
echo -n " Borg Backup ID:: "
read BORG_BACKUP_ID
echo -e " \033[33m--------------------------------------------\033[m"
echo ""
export BORG_PASSPHRASE=\"${BORG_PASSPHRASE}\"
export BORG_REPO=\"${BORG_REPO}\"
export BORG_RSH=\"${BORG_RSH}\"
export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
echononl "Mount archive '$(basename "${BORG_REPO}")::${BORG_BACKUP_ID}' to '${BORG_FUSE_MOUNT_DIR}'.."
mkdir -p \"${BORG_FUSE_MOUNT_DIR}\"
borg2 --remote-path borg2 --repo ${BORG_URL} mount -a ${BORG_BACKUP_ID} ${BORG_FUSE_MOUNT_DIR} >> "${log_file}" 2>&1
borg2 --remote-path borg2 --repo ${BORG_URL} mount -a ${BORG_BACKUP_ID} ${BORG_FUSE_MOUNT_DIR} ${LIST_OF_FILES_OR_DIRECTORIES}
On Backup Host type:
====================
export BORG_PASSPHRASE=\"${BORG_PASSPHRASE}\"
export BORG_REPO=\"${BORG_REPO}\"
export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
mkdir -p \"${_MOUNT_DIR_BACKUP_HOST}\"
borg2 --remote-path borg2 --repo ${BORG_REPO} mount -a ${BORG_BACKUP_ID} ${_MOUNT_DIR_BACKUP_HOST} ${LIST_OF_FILES_OR_DIRECTORIES}
You can find the mounted fuse archive at;
${_MOUNT_DIR_BACKUP_HOST}/${BORG_BACKUP_ID}
In Order to unmount repository archive type:
umount ${_MOUNT_DIR_BACKUP_HOST}
-----------------------------------------------------------------------------------------
\033[m\n"
blank_line
echo "Mount archive '$(basename "${BORG_REPO}")::${BORG_BACKUP_ID}' to"
echononl " '${BORG_FUSE_MOUNT_DIR}'.."
borg2 --remote-path borg2 --repo ${BORG_URL} mount -a ${BORG_BACKUP_ID} ${BORG_FUSE_MOUNT_DIR} ${LIST_OF_FILES_OR_DIRECTORIES} > "${log_file}" 2>&1
if [[ $? -gt 0 ]] ; then
echo_failed
@ -317,4 +482,11 @@ else
echo_ok
fi
blank_line
info "You can find the readonly mounted files from repository archive '${BORG_BACKUP_ID}' at directory:
\033[1m${BORG_FUSE_MOUNT_DIR}/${BORG_BACKUP_ID}\033[m"
clean_up 0