49 lines
1.4 KiB
Bash
Executable File
49 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
##Simple script to run Restic backups
|
|
source $SCRIPTS/Okiru
|
|
logging Restic
|
|
|
|
#Safety function; accepts repository to check
|
|
safety(){
|
|
#Check no other Restic process is using this repository; Free unnecessary locks, if present
|
|
if [[ -n $(ps aux | grep restic | grep $1) ]]; then
|
|
warn "Repository $1 is in use - ignoring"
|
|
return 1
|
|
# ^ If there's a restic process holding the repository, leave it alone.
|
|
else
|
|
info "Repository $1 is not in use - unlocking"
|
|
restic -r b2:$1 unlock
|
|
# ^ If a lock exists but no process, the repository is safe and should be unlocked.
|
|
fi
|
|
}
|
|
#Backup function; accepts repository and path to backup
|
|
backup(){
|
|
#Check safety
|
|
if safety $1; then
|
|
#Run the backup
|
|
if restic -r b2:$1 backup $2; then
|
|
ok "Path $2 completed upload to $1." #Running integrity check"
|
|
#Run integrity check
|
|
# if restic -r b2:$1 check; then
|
|
# echo "[OK]: Repository $1 is healthy"
|
|
# Prune repository to avoid unnecessary data
|
|
if restic -r b2:$1 prune; then
|
|
ok "Repository $1 is trim"
|
|
else
|
|
error "Failed to prune repository $1!"
|
|
fi
|
|
# else
|
|
# echo "[ERR]: Repository $1 failed integrity check!" > /dev/stderr
|
|
# fi
|
|
else
|
|
error "Repository $1 failed to upload path $2!"
|
|
fi
|
|
fi
|
|
}
|
|
#Pictures
|
|
backup Gerbil-TK /Red-Vol/Media/Pictures/
|
|
#Containers
|
|
backup Pukeko-XYZ-Containers /Red-Vol/Media/Containers
|
|
#Cloud
|
|
backup Pukeko-XYZ-Cloud /Red-Vol/Media/Cloud/Syncthing
|