27 lines
		
	
	
	
		
			543 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			543 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/usr/bin/env bash
 | 
						|
set -euo pipefail
 | 
						|
 | 
						|
on_exit() {
 | 
						|
  exit $?
 | 
						|
}
 | 
						|
trap on_exit EXIT
 | 
						|
 | 
						|
archiveName="%s-%s-$(date +%%Y-%%m-%%dT%%H:%%M:%%S)"
 | 
						|
archiveSuffix=".failed"
 | 
						|
 | 
						|
# Run borg init if the repo doesn't exist yet
 | 
						|
if ! borg list > /dev/null; then
 | 
						|
  borg init --encryption none
 | 
						|
fi
 | 
						|
(
 | 
						|
  borg create \
 | 
						|
    --compression auto,zstd \
 | 
						|
    "::${archiveName}${archiveSuffix}" \
 | 
						|
    '%s'
 | 
						|
)
 | 
						|
borg rename "::${archiveName}${archiveSuffix}" "${archiveName}"
 | 
						|
 | 
						|
borg prune \
 | 
						|
  --keep-daily=14 --keep-monthly=3 --keep-weekly=4 \
 | 
						|
  --glob-archives '%s-%s*'
 | 
						|
borg compact
 |