Compare commits

...

3 commits

4 changed files with 47 additions and 20 deletions

View file

@ -61,7 +61,7 @@ print_help () {
}
print_and_log () {
/usr/bin/ts "%Y-%m-%dT%H:%M:%S" | /usr/bin/tee -a $BACKUP_LOG
/usr/bin/env ts "%Y-%m-%dT%H:%M:%S" | /usr/bin/tee -a $BACKUP_LOG
}
set -o errexit
@ -70,6 +70,7 @@ set -o pipefail
ACTION=$1
DESTINATION=$2
INPUT="${@:3}"
RESTIC=$(which restic)
if [[ -z $DESTINATION && $ACTION == "help" ]]; then
print_logo
@ -105,7 +106,7 @@ else
"backup")
if [[ $AC_POWER == 1 ]]; then
echo "backing up to $DESTINATION." | print_and_log
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--cleanup-cache \
@ -120,7 +121,7 @@ else
;;
"check")
echo "Checking backup repository at $DESTINATION" | print_and_log
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--verbose \
@ -128,7 +129,7 @@ else
;;
"find")
echo "Searching for $INPUT at $DESTINATION"
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--verbose \
@ -140,7 +141,7 @@ else
;;
"init")
echo "Initializing backup repository at $DESTINATION" | print_and_log
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--verbose \
@ -148,7 +149,7 @@ else
;;
"mount")
echo "Mounting backup repository $DESTINATION at $INPUT" | print_and_log
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--verbose \
@ -156,7 +157,7 @@ else
;;
"restore")
echo "Restoring from $DESTINATION, $INPUT" | print_and_log
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--verbose \
@ -164,7 +165,7 @@ else
;;
"snapshots")
echo "Listing snapshots on $DESTINATION"
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--verbose \
@ -172,7 +173,7 @@ else
;;
"stats")
echo "Printing statistics for $DESTINATION"
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--verbose \
@ -180,23 +181,27 @@ else
;;
"prune")
if [[ $AC_POWER == 1 ]]; then
hourly=6
daily=7
monthly=12
yearly=5
echo """
Pruning backups at $DESTINATION ...
Keeping:
- 24 hourly backups
- 90 daily backups
- 12 monthly backups
- 5 yearly backups
- $hourly hourly backups
- $daily daily backups
- $monthly monthly backups
- $yearly yearly backups
""" | print_and_log
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--verbose \
--prune \
--keep-hourly=24 \
--keep-daily=90 \
--keep-monthly=12 \
--keep-yearly=5 \
--keep-hourly=$hourly \
--keep-daily=$daily \
--keep-monthly=$monthly \
--keep-yearly=$yearly \
forget | print_and_log
else
echo "Not plugged in, canceling prune."
@ -204,7 +209,7 @@ else
;;
"unlock")
echo "Unlocking backup repository at $DESTINATION" | print_and_log
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--verbose \
@ -212,7 +217,7 @@ else
;;
"clean")
echo "Cleaning repository at $DESTINATION" | print_and_log
/usr/bin/restic \
RESTIC \
-r "$BACKUP_REPOSITORY" \
-p "$BACKUP_PASSWORD" \
--verbose \

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.andrew.backup.sh</string>
<key>ProgramArguments</key>
<array>
<string>touch</string>
<string>/tmp/helloworld</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/var/log/testDaemon.log</string>
<key>StandardErrorPath</key>
<string>/var/log/testDaemon.log</string>
</dict>
</plist>