Compare commits
	
		
			4 Commits
		
	
	
		
			29ab2c11a3
			...
			c73a3b8531
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | c73a3b8531 | ||
|  | 8b201ca047 | ||
|  | a86f13a1e5 | ||
|  | 7b87c246c3 | 
							
								
								
									
										13
									
								
								.idea/.idea.borgScripts.dir/.idea/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								.idea/.idea.borgScripts.dir/.idea/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | # Default ignored files | ||||||
|  | /shelf/ | ||||||
|  | /workspace.xml | ||||||
|  | # Rider ignored files | ||||||
|  | /.idea.borgScripts.iml | ||||||
|  | /modules.xml | ||||||
|  | /contentModel.xml | ||||||
|  | /projectSettingsUpdater.xml | ||||||
|  | # Datasource local storage ignored files | ||||||
|  | /../../../../../../../../../:\Redirected\Asif\Documents\RiderProjects\borgScripts\.idea\.idea.borgScripts.dir\.idea/dataSources/ | ||||||
|  | /dataSources.local.xml | ||||||
|  | # Editor-based HTTP Client requests | ||||||
|  | /httpRequests/ | ||||||
							
								
								
									
										12
									
								
								.idea/.idea.borgScripts.dir/.idea/dictionaries/asif.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.idea/.idea.borgScripts.dir/.idea/dictionaries/asif.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | <component name="ProjectDictionaryState"> | ||||||
|  |   <dictionary name="asif"> | ||||||
|  |     <words> | ||||||
|  |       <w>borgbackup</w> | ||||||
|  |       <w>borghelper</w> | ||||||
|  |       <w>borgvars</w> | ||||||
|  |       <w>listall</w> | ||||||
|  |       <w>makevars</w> | ||||||
|  |       <w>viewarchive</w> | ||||||
|  |     </words> | ||||||
|  |   </dictionary> | ||||||
|  | </component> | ||||||
							
								
								
									
										8
									
								
								.idea/.idea.borgScripts.dir/.idea/indexLayout.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.idea/.idea.borgScripts.dir/.idea/indexLayout.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="ContentModelUserStore"> | ||||||
|  |     <attachedFolders /> | ||||||
|  |     <explicitIncludes /> | ||||||
|  |     <explicitExcludes /> | ||||||
|  |   </component> | ||||||
|  | </project> | ||||||
							
								
								
									
										7
									
								
								.idea/.idea.borgScripts.dir/.idea/riderModule.iml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								.idea/.idea.borgScripts.dir/.idea/riderModule.iml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <module type="RIDER_MODULE" version="4"> | ||||||
|  |   <component name="NewModuleRootManager"> | ||||||
|  |     <content url="file://$MODULE_DIR$/../.." /> | ||||||
|  |     <orderEntry type="sourceFolder" forTests="false" /> | ||||||
|  |   </component> | ||||||
|  | </module> | ||||||
							
								
								
									
										13
									
								
								.idea/.idea.borgScripts.dir/.idea/vcs.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								.idea/.idea.borgScripts.dir/.idea/vcs.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="CommitMessageInspectionProfile"> | ||||||
|  |     <profile version="1.0"> | ||||||
|  |       <inspection_tool class="BodyLimit" enabled="true" level="ERROR" enabled_by_default="true" /> | ||||||
|  |       <inspection_tool class="SubjectBodySeparation" enabled="true" level="ERROR" enabled_by_default="true" /> | ||||||
|  |       <inspection_tool class="SubjectLimit" enabled="true" level="ERROR" enabled_by_default="true" /> | ||||||
|  |     </profile> | ||||||
|  |   </component> | ||||||
|  |   <component name="VcsDirectoryMappings"> | ||||||
|  |     <mapping directory="$PROJECT_DIR$" vcs="Git" /> | ||||||
|  |   </component> | ||||||
|  | </project> | ||||||
							
								
								
									
										3
									
								
								.vscode/numbered-bookmarks.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.vscode/numbered-bookmarks.json
									
									
									
									
										vendored
									
									
								
							| @ -1,3 +0,0 @@ | |||||||
| { |  | ||||||
| 	"bookmarks": [] |  | ||||||
| } |  | ||||||
							
								
								
									
										155
									
								
								borghelper.sh
									
									
									
									
									
								
							
							
						
						
									
										155
									
								
								borghelper.sh
									
									
									
									
									
								
							| @ -3,7 +3,7 @@ | |||||||
| # | # | ||||||
| ## borg helper script for viewing and restoring backups | ## borg helper script for viewing and restoring backups | ||||||
| ## | ## | ||||||
| ## script written by Asif Bacchus, last updated March 26, 2020. | ## script written by Asif Bacchus, last updated May 15, 2021. | ||||||
| ## | ## | ||||||
| ## The author of this script is not affiliated with 'borgbackup' in any way and | ## The author of this script is not affiliated with 'borgbackup' in any way and | ||||||
| ## does not warrant anything about this script, its operation, suitability or | ## does not warrant anything about this script, its operation, suitability or | ||||||
| @ -15,15 +15,16 @@ | |||||||
| trap trapExit 1 2 3 6 | trap trapExit 1 2 3 6 | ||||||
| 
 | 
 | ||||||
| ### functions | ### functions | ||||||
| cleanup () { | cleanup() { | ||||||
|     # remove borg temp directory, if it exists |     # remove borg temp directory, if it exists | ||||||
|  |     # shellcheck disable=SC2154 | ||||||
|     if [ -d "${borgBaseDir}/tmp" ]; then |     if [ -d "${borgBaseDir}/tmp" ]; then | ||||||
|         if ! rm -rf "${borgBaseDir}/tmp" > /dev/null 2>&1; then |         if ! rm -rf "${borgBaseDir}/tmp" >/dev/null 2>&1; then | ||||||
|             consoleError 3 "Script completed successfully but could not remove temporary directory at '$borgBaseDir/tmp'. Sorry to be messy." |             consoleError 3 "Script completed successfully but could not remove temporary directory at '$borgBaseDir/tmp'. Sorry to be messy." | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|     if [ -f "${restorePath}/touch.test" ]; then |     if [ -f "${restorePath}/touch.test" ]; then | ||||||
|         if ! rm -f "${restorePath}/touch.test" > /dev/null 2>&1; then |         if ! rm -f "${restorePath}/touch.test" >/dev/null 2>&1; then | ||||||
|             consoleError 5 "Script completed successfully but could not remove test file at '$restorePath/touch.test'. Sorry to be messy." |             consoleError 5 "Script completed successfully but could not remove test file at '$restorePath/touch.test'. Sorry to be messy." | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
| @ -37,73 +38,72 @@ consoleError() { | |||||||
| 
 | 
 | ||||||
| scriptHelp() { | scriptHelp() { | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     textblock "${bold}Usage: borghelper.sh [parameters]${norm}" |     textBlock "${bold}Usage: borghelper.sh [parameters]${norm}" | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     textblock "Simple script to read connection parameters from a flat text file and process borg 'info', 'list' and 'restore' commands without the very long command lines that are required when specifying repo names and passwords, etc." |     textBlock "Simple script to read connection parameters from a flat text file and process borg 'info', 'list' and 'restore' commands without the very long command lines that are required when specifying repo names and passwords, etc." | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     textblock "${magenta}The script has the following parameters:${norm}" |     textBlock "${magenta}The script has the following parameters:${norm}" | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     textblock "${magenta}--- Required Parameters ---${norm}" |     textBlock "${magenta}--- Required Parameters ---${norm}" | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     ptextblock "-v|--vars" |     textBlockParams "-v|--vars" | ||||||
|     textblock "Path to the .borgvars file from which to read borg connection information. This is not required if run with '--makevars'." |     textBlock "Path to the .borgvars file from which to read borg connection information. This is not required if run with '--makevars'." | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     textblock "${magenta}--- Operation Modes ---${norm}" |     textBlock "${magenta}--- Operation Modes ---${norm}" | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     ptextblock "--makevars" |     textBlockParams "--makevars" | ||||||
|     textblock "Create a sample .borgvars file that you can fill in and use with this script." |     textBlock "Create a sample .borgvars file that you can fill in and use with this script." | ||||||
|     ptextblock "-i|--info" |     textBlockParams "-i|--info" | ||||||
|     textblock "Get information about a specified borg repo archive. Requires you supply '--archive'." |     textBlock "Get information about a specified borg repo archive. Requires you supply '--archive'." | ||||||
|     ptextblock "-l|--list" |     textBlockParams "-l|--list" | ||||||
|     textblock "List contents of a specified borg repo archive. Requires you supply '--archive'. You can optionally specify a file/pattern to search for using '--file'." |     textBlock "List contents of a specified borg repo archive. Requires you supply '--archive'. You can optionally specify a file/pattern to search for using '--file'." | ||||||
|     ptextblock "-la|--list-all" |     textBlockParams "-la|--list-all" | ||||||
|     textblock "List all available archives within the repo specified in your .borgvars file." |     textBlock "List all available archives within the repo specified in your .borgvars file." | ||||||
|     ptextblock "-r|--restore" |     textBlockParams "-r|--restore" | ||||||
|     textblock "Restore the specified borg repo archive/file(s). Requires you supply '--archive'." |     textBlock "Restore the specified borg repo archive/file(s). Requires you supply '--archive'." | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     textblock "${magenta}--- Selector Parameters ---${norm}" |     textBlock "${magenta}--- Selector Parameters ---${norm}" | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     ptextblock "-a|--archive" |     textBlockParams "-a|--archive" | ||||||
|     textblock "The archive within your borg repo you wish to work with." |     textBlock "The archive within your borg repo you wish to work with." | ||||||
|     ptextblock "--exclude" |     textBlockParams "--exclude" | ||||||
|     textblock "Pattern (python/borg) of files to exclude from a restore operation." |     textBlock "Pattern (python/borg) of files to exclude from a restore operation." | ||||||
|     ptextblock "-f|--file" |     textBlockParams "-f|--file" | ||||||
|     textblock "Specific file/pattern (python/borg) within an archive for which you want to restore or search. Requires that you supply '--archive'." |     textBlock "Specific file/pattern (python/borg) within an archive for which you want to restore or search. Requires that you supply '--archive'." | ||||||
|     ptextblock "-p|--path" |     textBlockParams "-p|--path" | ||||||
|     textblock "Path to which you want your archive/files restored. This script will attempt to create the directory for you if it does not already exist." |     textBlock "Path to which you want your archive/files restored. This script will attempt to create the directory for you if it does not already exist." | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     textblock "${magenta}--- Restore Options ---${norm}" |     textBlock "${magenta}--- Restore Options ---${norm}" | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     ptextblock "--progress" |     textBlockParams "--progress" | ||||||
|     textblock "Display progress indicator during restore operations. WARNING: This can drastically slow down operations on larger archives!" |     textBlock "Display progress indicator during restore operations. WARNING: This can drastically slow down operations on larger archives!" | ||||||
|     ptextblock "--verbose" |     textBlockParams "--verbose" | ||||||
|     textblock "List the individual files being processed during restore operations." |     textBlock "List the individual files being processed during restore operations." | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     textblock "${magenta}--- Other Parameters ---${norm}" |     textBlock "${magenta}--- Other Parameters ---${norm}" | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     ptextblock "-h|-?|--help" |     textBlockParams "-h|-?|--help" | ||||||
|     textblock "This help screen." |     textBlock "This help screen." | ||||||
|     printf "\n" |     printf "\n" | ||||||
|     exit 0 |     exit 0 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| textblock() { | textBlock() { | ||||||
|     printf "%s\n" "$1" | fold -w "$width" -s |     printf "%s\n" "$1" | fold -w "$width" -s | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ptextblock() { | textBlockParams() { | ||||||
|     printf "%s%s%s\n" "$cyan" "$1" "$norm" |     printf "%s%s%s\n" "$cyan" "$1" "$norm" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| trapExit () { | trapExit() { | ||||||
|     cleanup |     cleanup | ||||||
|     printf "%s\nScript execution terminated via signal.\n\n%s" "$err" "$norm" |     printf "%s\nScript execution terminated via signal.\n\n%s" "$err" "$norm" | ||||||
|     exit 99 |     exit 99 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### text formatting presets | ### text formatting presets | ||||||
| if command -v tput > /dev/null; then | if command -v tput >/dev/null; then | ||||||
|     bold=$(tput bold) |     bold=$(tput bold) | ||||||
|     cyan=$(tput setaf 6) |     cyan=$(tput setaf 6) | ||||||
|     err=$(tput bold)$(tput setaf 1) |     err=$(tput bold)$(tput setaf 1) | ||||||
| @ -119,23 +119,22 @@ else | |||||||
|     width=80 |     width=80 | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### pre-requisites | ### pre-requisites | ||||||
| 
 | 
 | ||||||
| # is user root? | # is user root? | ||||||
| if [ ! "$( id -u )" -eq 0 ]; then | if [ ! "$(id -u)" -eq 0 ]; then | ||||||
|     consoleError 1 'You must be root to run this script.' |     consoleError 1 'You must be root to run this script.' | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # has a parameter been passed to this script? | # has a parameter been passed to this script? | ||||||
| if [ -z "$1" ]; then | if [ -z "$1" ]; then | ||||||
|     consoleError 1 "No operation requested. Please run this script with '--help' for valid parameters." |     scriptHelp | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # process startup parameters | # process startup parameters | ||||||
| while [ $# -gt 0 ]; do | while [ $# -gt 0 ]; do | ||||||
|     case "$1" in |     case "$1" in | ||||||
|         -a|--archive) |     -a | --archive) | ||||||
|         # name of backup archive |         # name of backup archive | ||||||
|         if [ -z "$2" ]; then |         if [ -z "$2" ]; then | ||||||
|             consoleError 1 "Please provide the name of the backup archive you want to work with or use '--list-all' to get a full list." |             consoleError 1 "Please provide the name of the backup archive you want to work with or use '--list-all' to get a full list." | ||||||
| @ -151,7 +150,7 @@ while [ $# -gt 0 ]; do | |||||||
|         exclusions="$2" |         exclusions="$2" | ||||||
|         shift |         shift | ||||||
|         ;; |         ;; | ||||||
|         -f|--file) |     -f | --file) | ||||||
|         # specific file/pattern to restore |         # specific file/pattern to restore | ||||||
|         if [ -z "$2" ]; then |         if [ -z "$2" ]; then | ||||||
|             consoleError 1 'Please provide the name of the specific file/pattern for which you want to restore or search.' |             consoleError 1 'Please provide the name of the specific file/pattern for which you want to restore or search.' | ||||||
| @ -159,21 +158,20 @@ while [ $# -gt 0 ]; do | |||||||
|         fileName="$2" |         fileName="$2" | ||||||
|         shift |         shift | ||||||
|         ;; |         ;; | ||||||
|         -h|-\?|--help) |     -h | -\? | --help) | ||||||
|         # display help |         # display help | ||||||
|         scriptHelp |         scriptHelp | ||||||
|             exit 0 |  | ||||||
|         ;; |         ;; | ||||||
|         -i|--info) |     -i | --info) | ||||||
|         # show archive information |         # show archive information | ||||||
|         operation='info' |         operation='info' | ||||||
|         ;; |         ;; | ||||||
|         -l|--list) |     -l | --list) | ||||||
|         # list contents of specific backup |         # list contents of specific backup | ||||||
|         operation='viewarchive' |         operation='viewarchive' | ||||||
|         ;; |         ;; | ||||||
| 
 | 
 | ||||||
|         -la|--list-all) |     -la | --list-all) | ||||||
|         # list all backup archives |         # list all backup archives | ||||||
|         operation='listall' |         operation='listall' | ||||||
|         ;; |         ;; | ||||||
| @ -181,7 +179,7 @@ while [ $# -gt 0 ]; do | |||||||
|         # make a borgvars template file |         # make a borgvars template file | ||||||
|         operation='makevars' |         operation='makevars' | ||||||
|         ;; |         ;; | ||||||
|         -p|--path) |     -p | --path) | ||||||
|         # path to restore files |         # path to restore files | ||||||
|         if [ -z "$2" ]; then |         if [ -z "$2" ]; then | ||||||
|             consoleError 1 'Please specify a path where you want files restored.' |             consoleError 1 'Please specify a path where you want files restored.' | ||||||
| @ -193,11 +191,11 @@ while [ $# -gt 0 ]; do | |||||||
|         # show progress |         # show progress | ||||||
|         commonOptions="$commonOptions --progress" |         commonOptions="$commonOptions --progress" | ||||||
|         ;; |         ;; | ||||||
|         -r|--restore) |     -r | --restore) | ||||||
|         # restore archive/file |         # restore archive/file | ||||||
|         operation='restore' |         operation='restore' | ||||||
|         ;; |         ;; | ||||||
|         -v|--vars) |     -v | --vars) | ||||||
|         # location of borgvars file |         # location of borgvars file | ||||||
|         if [ -z "$2" ]; then |         if [ -z "$2" ]; then | ||||||
|             consoleError 1 'Please provide the path to the file with your borg connection information.' |             consoleError 1 'Please provide the path to the file with your borg connection information.' | ||||||
| @ -222,10 +220,9 @@ while [ $# -gt 0 ]; do | |||||||
|     shift |     shift | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### process 'makevars' operation | ### process 'makevars' operation | ||||||
| if [ "$operation" = 'makevars' ]; then | if [ "$operation" = 'makevars' ]; then | ||||||
|     if ! printf "sshKeyFile=\nborgBaseDir=\nborgRepo=\nborgRepoPassword=\nborgRemote=\n" > ./sample.borgvars; then |     if ! printf "sshKeyFile=\nborgBaseDir=\nborgRepo=\nborgRepoPassword=\nborgRepoKey=\nborgRemote=\n" >./sample.borgvars; then | ||||||
|         consoleError 4 'Could not write sample borgvars file.' |         consoleError 4 'Could not write sample borgvars file.' | ||||||
|     else |     else | ||||||
|         exit 0 |         exit 0 | ||||||
| @ -276,24 +273,24 @@ if [ "$operation" = 'restore' ]; then | |||||||
|     if [ -d "$restorePath" ]; then |     if [ -d "$restorePath" ]; then | ||||||
|         # convert to absolute path |         # convert to absolute path | ||||||
|         restorePath=$( |         restorePath=$( | ||||||
|             cd "$restorePath" || \ |             cd "$restorePath" || | ||||||
|             consoleError 5 'Cannot access specified restore directory.'; \ |                 consoleError 5 'Cannot access specified restore directory.' | ||||||
|             pwd -P |             pwd -P | ||||||
|         ) |         ) | ||||||
|         if ! touch "${restorePath}/touch.test" > /dev/null 2>&1; then |         if ! touch "${restorePath}/touch.test" >/dev/null 2>&1; then | ||||||
|             consoleError 5 'Cannot write to specified restore directory.' |             consoleError 5 'Cannot write to specified restore directory.' | ||||||
|         fi |         fi | ||||||
|     else |     else | ||||||
|         if ! mkdir -p "${restorePath}" > /dev/null 2>&1; then |         if ! mkdir -p "${restorePath}" >/dev/null 2>&1; then | ||||||
|             consoleError 5 'Cannot create specified restore directory.' |             consoleError 5 'Cannot create specified restore directory.' | ||||||
|         else |         else | ||||||
|             # convert to absolute path |             # convert to absolute path | ||||||
|             restorePath=$( |             restorePath=$( | ||||||
|                 cd "$restorePath" || \ |                 cd "$restorePath" || | ||||||
|                 consoleError 5 'Cannot access specified restore directory.'; \ |                     consoleError 5 'Cannot access specified restore directory.' | ||||||
|                 pwd -P |                 pwd -P | ||||||
|             ) |             ) | ||||||
|             if ! touch "${restorePath}/touch.test" > /dev/null 2>&1; then |             if ! touch "${restorePath}/touch.test" >/dev/null 2>&1; then | ||||||
|                 consoleError 5 'Cannot write to specified restore directory.' |                 consoleError 5 'Cannot write to specified restore directory.' | ||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
| @ -304,12 +301,14 @@ fi | |||||||
| 
 | 
 | ||||||
| # check if file was provided as a relative or absolute path | # check if file was provided as a relative or absolute path | ||||||
| case "${varsFile}" in | case "${varsFile}" in | ||||||
|     /*) | /*) | ||||||
|     # absolute path, no need to rewrite variable |     # absolute path, no need to rewrite variable | ||||||
|  |     # shellcheck disable=SC1090 | ||||||
|     . "${varsFile}" |     . "${varsFile}" | ||||||
|     ;; |     ;; | ||||||
|     *) | *) | ||||||
|     # relative path, prepend './' to create absolute path |     # relative path, prepend './' to create absolute path | ||||||
|  |     # shellcheck disable=SC1090 | ||||||
|     . "./${varsFile}" |     . "./${varsFile}" | ||||||
|     ;; |     ;; | ||||||
| esac | esac | ||||||
| @ -323,6 +322,7 @@ fi | |||||||
| export BORG_BASE_DIR="${borgBaseDir%/}" | export BORG_BASE_DIR="${borgBaseDir%/}" | ||||||
| 
 | 
 | ||||||
| ## check path to SSH keyfile | ## check path to SSH keyfile | ||||||
|  | # shellcheck disable=SC2154 | ||||||
| if [ -z "${sshKeyFile}" ]; then | if [ -z "${sshKeyFile}" ]; then | ||||||
|     consoleError 2 "$varsFile: 'sshKeyFile' is not specified." |     consoleError 2 "$varsFile: 'sshKeyFile' is not specified." | ||||||
| elif [ ! -f "${sshKeyFile}" ]; then | elif [ ! -f "${sshKeyFile}" ]; then | ||||||
| @ -331,12 +331,14 @@ fi | |||||||
| export BORG_RSH="ssh -i ${sshKeyFile}" | export BORG_RSH="ssh -i ${sshKeyFile}" | ||||||
| 
 | 
 | ||||||
| # check borg repo connect string | # check borg repo connect string | ||||||
|  | # shellcheck disable=SC2154 | ||||||
| if [ -z "${borgRepo}" ]; then | if [ -z "${borgRepo}" ]; then | ||||||
|     consoleError 2 "$varsFile: 'borgRepo' is not specified." |     consoleError 2 "$varsFile: 'borgRepo' is not specified." | ||||||
| fi | fi | ||||||
| export BORG_REPO="${borgRepo}" | export BORG_REPO="${borgRepo}" | ||||||
| 
 | 
 | ||||||
| # check borg repo password | # check borg repo password | ||||||
|  | # shellcheck disable=SC2154 | ||||||
| if [ -n "${borgRepoPassword}" ]; then | if [ -n "${borgRepoPassword}" ]; then | ||||||
|     export BORG_PASSPHRASE="${borgRepoPassword}" |     export BORG_PASSPHRASE="${borgRepoPassword}" | ||||||
| elif [ "${borgRepoPassword}" = 'none' ]; then | elif [ "${borgRepoPassword}" = 'none' ]; then | ||||||
| @ -345,9 +347,15 @@ else | |||||||
|     consoleError 2 "$varsFile: 'borgRepoPassword' must be specified or must be 'none' if no password has been set (VERY INSECURE!)." |     consoleError 2 "$varsFile: 'borgRepoPassword' must be specified or must be 'none' if no password has been set (VERY INSECURE!)." | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # export borg remote path, if specified | # check borg keyfile if supplied | ||||||
| if [ -n "${borgRemote}" ]; then export BORG_REMOTE_PATH="${borgRemote}"; fi | # shellcheck disable=SC2154 | ||||||
|  | if [ -n "${borgRepoKey}" ]; then | ||||||
|  |     export BORG_KEY_FILE="${borgRepoKey}" | ||||||
|  | fi | ||||||
| 
 | 
 | ||||||
|  | # export borg remote path, if specified | ||||||
|  | # shellcheck disable=SC2154 | ||||||
|  | if [ -n "${borgRemote}" ]; then export BORG_REMOTE_PATH="${borgRemote}"; fi | ||||||
| 
 | 
 | ||||||
| ### create borg temp dir: | ### create borg temp dir: | ||||||
| ## python requires a writable temporary directory when unpacking borg and | ## python requires a writable temporary directory when unpacking borg and | ||||||
| @ -363,7 +371,6 @@ if [ ! -d "${borgBaseDir}/tmp" ]; then | |||||||
| fi | fi | ||||||
| export TMPDIR="${borgBaseDir}/tmp" | export TMPDIR="${borgBaseDir}/tmp" | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### execute borg operations | ### execute borg operations | ||||||
| 
 | 
 | ||||||
| # info operations | # info operations | ||||||
| @ -384,29 +391,31 @@ elif [ "$operation" = 'restore' ]; then | |||||||
|     if [ -z "$fileName" ]; then |     if [ -z "$fileName" ]; then | ||||||
|         # restore entire archive |         # restore entire archive | ||||||
|         if [ "$exclusions" ]; then |         if [ "$exclusions" ]; then | ||||||
|  |             # shellcheck disable=SC2086 | ||||||
|             borg --show-rc ${commonOptions} extract ${restoreOptions} ::"${archiveName}" --exclude "${exclusions}" |             borg --show-rc ${commonOptions} extract ${restoreOptions} ::"${archiveName}" --exclude "${exclusions}" | ||||||
|         else |         else | ||||||
|  |             # shellcheck disable=SC2086 | ||||||
|             borg --show-rc ${commonOptions} extract ${restoreOptions} ::"${archiveName}" |             borg --show-rc ${commonOptions} extract ${restoreOptions} ::"${archiveName}" | ||||||
|         fi |         fi | ||||||
|     elif [ "$fileName" ]; then |     elif [ "$fileName" ]; then | ||||||
|         # restore file/pattern |         # restore file/pattern | ||||||
|         if [ "$exclusions" ]; then |         if [ "$exclusions" ]; then | ||||||
|  |             # shellcheck disable=SC2086 | ||||||
|             borg --show-rc ${commonOptions} extract ${restoreOptions} ::"${archiveName}" "${fileName}" --exclude "${exclusions}" |             borg --show-rc ${commonOptions} extract ${restoreOptions} ::"${archiveName}" "${fileName}" --exclude "${exclusions}" | ||||||
|         else |         else | ||||||
|  |             # shellcheck disable=SC2086 | ||||||
|             borg --show-rc ${commonOptions} extract ${restoreOptions} ::"${archiveName}" "${fileName}" |             borg --show-rc ${commonOptions} extract ${restoreOptions} ::"${archiveName}" "${fileName}" | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### exit gracefully | ### exit gracefully | ||||||
| cleanup | cleanup | ||||||
| exit 0 | exit 0 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### exit codes | ### exit codes | ||||||
| # 0:    no errors, script completed successfully | # 0:    no errors, script completed successfully | ||||||
| # 1:    parameter error (missing, non-existant or invalid input) | # 1:    parameter error (missing, non-existent or invalid input) | ||||||
| # 2:    parameter missing/invalid in .borgvars file | # 2:    parameter missing/invalid in .borgvars file | ||||||
| # 3:    could not create/remove borg tmp directory | # 3:    could not create/remove borg tmp directory | ||||||
| # 4:    could not write sample borgvars file (permissions?) | # 4:    could not write sample borgvars file (permissions?) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user