fixed log pruning
This commit is contained in:
		
							parent
							
								
									af42157ec6
								
							
						
					
					
						commit
						dc2256b2d4
					
				|  | @ -1,20 +1,19 @@ | ||||||
| #!/bin/sh | #!/bin/sh | ||||||
| 
 | 
 | ||||||
| # Setting this, so the repo does not need to be given on the commandline: | # Setting this, so it can be ported to multiple device easily | ||||||
| machine="$( hostnamectl --static )" |  | ||||||
| remoteHost="reposerver" |  | ||||||
| remoteUser="" | remoteUser="" | ||||||
|  | remoteHost="reposerver" | ||||||
|  | machine="$( hostnamectl --static )" | ||||||
| export BORG_REPO="$remoteUser@$remoteHost:/backup/$machine" | export BORG_REPO="$remoteUser@$remoteHost:/backup/$machine" | ||||||
| 
 | 
 | ||||||
| # See the section "Passphrase notes" for more infos. | # See the section "Passphrase notes" for more infos | ||||||
| export BORG_PASSPHRASE='' | export BORG_PASSPHRASE='' | ||||||
| 
 | 
 | ||||||
| # Non-interactively accept relocation of a repository | # Non-interactively accept relocation of a repository | ||||||
| export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes  | export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes  | ||||||
| 
 | 
 | ||||||
| # Some helpers and error handling: | # Some helpers and error handling | ||||||
| logPath="/home/ez/.cache/logs/borg" | logFile="/home/ez/.cache/logs/borg/$machine-$( date +%Y-%m-%d-%H:%M:%S.%N )" | ||||||
| logFile="$logPath/$( date +%Y-%m-%d-%H:%M:%S.%N )" |  | ||||||
| infoLine() { printf "%s\t%s\n" "$( date +%H:%M:%S )" "$*" | tee -a "$logFile"; } | infoLine() { printf "%s\t%s\n" "$( date +%H:%M:%S )" "$*" | tee -a "$logFile"; } | ||||||
| seeLog() { printf "\n%s %s" "$*" "$logFile"; } | seeLog() { printf "\n%s %s" "$*" "$logFile"; } | ||||||
| trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM | trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM | ||||||
|  | @ -27,9 +26,9 @@ notify() { | ||||||
|             dialog_kind='information' |             dialog_kind='information' | ||||||
|         fi |         fi | ||||||
|         for u in $(users); do |         for u in $(users); do | ||||||
|             sudo -u "$u" DISPLAY=:0 \ |             sudo -u "$u" DISPLAY=:0  | ||||||
|             DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$(sudo -u "$u" id -u)/bus" \ |             DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$(sudo -u "$u" id -u)/bus" \ | ||||||
|             notify-send -a 'luky-borg-backup' "$1" "$2" --icon="dialog-$dialog_kind" |             notify-send --app-name="Borg Backup" "$1" "$2" --icon="dialog-$dialog_kind" | ||||||
|         done |         done | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  | @ -38,12 +37,17 @@ notify() { | ||||||
| tidyLogs() { | tidyLogs() { | ||||||
| 	mapfile -t removeList < <(grep -w "^Pruning archive" "$logFile" | awk '{ print $4 }' ) | 	mapfile -t removeList < <(grep -w "^Pruning archive" "$logFile" | awk '{ print $4 }' ) | ||||||
| 	for ((i=0; i<${#removeList[@]}; i++)); do | 	for ((i=0; i<${#removeList[@]}; i++)); do | ||||||
| 	rm "$logPath/${removeList[i]}" | 	# Expand path of logFile | ||||||
|  | 	# Slice off the current backup name | ||||||
|  | 	# Slice off seconds from timestamp  | ||||||
|  | 	# Use wildcard to match the rest for matching filenames easily | ||||||
|  | 	set -- "${logFile%/*}"/"${removeList[i]%:*}"* | ||||||
|  | 	rm "$@" | ||||||
| 	done | 	done | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Backup the most important directories into an archive named after | # Backup the most important directories into an archive named after | ||||||
| # the machine this script is currently running on: | # the machine this script is currently running on | ||||||
| notify info "Starting backup to $BORG_REPO" | notify info "Starting backup to $BORG_REPO" | ||||||
| infoLine "Starting backup to $BORG_REPO"  | infoLine "Starting backup to $BORG_REPO"  | ||||||
| 
 | 
 | ||||||
|  | @ -90,7 +94,7 @@ backup_exit=$? | ||||||
| # Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly | # Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly | ||||||
| # archives of THIS machine. The '{hostname}-*' matching is very important to | # archives of THIS machine. The '{hostname}-*' matching is very important to | ||||||
| # limit prune's operation to this machine's archives and not apply to | # limit prune's operation to this machine's archives and not apply to | ||||||
| # other machines' archives also: | # other machines' archives also | ||||||
| notify info "Pruning repository" | notify info "Pruning repository" | ||||||
| infoLine "Pruning repository"  | infoLine "Pruning repository"  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,10 +1,10 @@ | ||||||
| #!/bin/sh | #!/bin/sh | ||||||
| 
 | 
 | ||||||
| # Setting this, so the repo does not need to be given on the commandline: | # Setting this, so it can be ported to multiple device easily | ||||||
|  | remoteUser="" | ||||||
|  | remoteHost="reposerver" | ||||||
| machine="$( hostnamectl --static )" | machine="$( hostnamectl --static )" | ||||||
| #remoteHost="" | export BORG_REPO="$remoteUser@$remoteHost:/backup/$machine" | ||||||
| #remoteUser="" |  | ||||||
| export BORG_REPO="/backup/$machine" |  | ||||||
| 
 | 
 | ||||||
| # See the section "Passphrase notes" for more infos. | # See the section "Passphrase notes" for more infos. | ||||||
| export BORG_PASSPHRASE='' | export BORG_PASSPHRASE='' | ||||||
|  | @ -12,9 +12,8 @@ export BORG_PASSPHRASE='' | ||||||
| # Non-interactively accept relocation of a repository | # Non-interactively accept relocation of a repository | ||||||
| export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes  | export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes  | ||||||
| 
 | 
 | ||||||
| # some helpers and error handling: | # Some helpers and error handling | ||||||
| logPath="/home/ez/.cache/logs/borg" | logFile="/home/ez/.cache/logs/borg/$machine-$( date +%Y-%m-%d-%H:%M:%S.%N )" | ||||||
| logFile="$logPath/$( date +%Y-%m-%d-%H:%M:%S.%N )" |  | ||||||
| infoLine() { printf "%s\t%s\n" "$( date +%H:%M:%S )" "$*" | tee -a "$logFile"; } | infoLine() { printf "%s\t%s\n" "$( date +%H:%M:%S )" "$*" | tee -a "$logFile"; } | ||||||
| seeLog() { printf "\n%s %s" "$*" "$logFile"; } | seeLog() { printf "\n%s %s" "$*" "$logFile"; } | ||||||
| trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM | trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM | ||||||
|  | @ -23,7 +22,12 @@ trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM | ||||||
| tidyLogs() { | tidyLogs() { | ||||||
| 	mapfile -t removeList < <(grep -w "^Pruning archive" "$logFile" | awk '{ print $4 }' ) | 	mapfile -t removeList < <(grep -w "^Pruning archive" "$logFile" | awk '{ print $4 }' ) | ||||||
| 	for ((i=0; i<${#removeList[@]}; i++)); do | 	for ((i=0; i<${#removeList[@]}; i++)); do | ||||||
| 	rm "$logPath/${removeList[i]}" | 	# Expand path of logFile | ||||||
|  | 	# Slice off the current backup name | ||||||
|  | 	# Slice off seconds from timestamp  | ||||||
|  | 	# Use wildcard to match the rest for matching filenames easily | ||||||
|  | 	set -- "${logFile%/*}"/"${removeList[i]%:*}"* | ||||||
|  | 	rm "$@" | ||||||
| 	done | 	done | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue