Add restic-check launchagent
This commit is contained in:
@@ -12,16 +12,16 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>/bin/bash</string>
|
<string>/bin/bash</string>
|
||||||
<string>-c</string>
|
<string>-c</string>
|
||||||
<string>source /usr/local/etc/restic/default.env.sh && /usr/local/bin/restic_backup.sh >>$HOME/$LOG_OUT 2>>$HOME/$LOG_ERR</string>
|
<string>source $INSTALL_PREFIX/etc/restic/default.env.sh && $INSTALL_PREFIX/bin/restic_backup.sh >>$HOME/$LOG_OUT 2>>$HOME/$LOG_ERR</string>
|
||||||
</array>
|
</array>
|
||||||
<key>EnvironmentVariables</key>
|
<key>EnvironmentVariables</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>PATH</key>
|
<key>PATH</key>
|
||||||
<string>/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
|
<string>$INSTALL_PREFIX/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
|
||||||
<key>LOG_OUT</key>
|
<key>LOG_OUT</key>
|
||||||
<string>/Library/Logs/restic/backup-stdout.log</string>
|
<string>/Library/Logs/restic/backup_stdout.log</string>
|
||||||
<key>LOG_ERR</key>
|
<key>LOG_ERR</key>
|
||||||
<string>/Library/Logs/restic/backup-stderr.log</string>
|
<string>/Library/Logs/restic/backup_stderr.log</string>
|
||||||
</dict>
|
</dict>
|
||||||
<key>RunAtLoad</key>
|
<key>RunAtLoad</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<?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>com.github.erikw.restic-check</string>
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>/bin/bash</string>
|
||||||
|
<string>-c</string>
|
||||||
|
<string>source $INSTALL_PREFIX/etc/restic/default.env.sh && $INSTALL_PREFIX/bin/restic_check.sh >>$HOME/$LOG_OUT 2>>$HOME/$LOG_ERR</string>
|
||||||
|
</array>
|
||||||
|
<key>EnvironmentVariables</key>
|
||||||
|
<dict>
|
||||||
|
<key>PATH</key>
|
||||||
|
<string>$INSTALL_PREFIX/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
|
||||||
|
<key>LOG_OUT</key>
|
||||||
|
<string>/Library/Logs/restic/check_stdout.log</string>
|
||||||
|
<key>LOG_ERR</key>
|
||||||
|
<string>/Library/Logs/restic/check_stderr.log</string>
|
||||||
|
</dict>
|
||||||
|
<key>RunAtLoad</key>
|
||||||
|
<true/>
|
||||||
|
<!-- Will schedule check every 1st of the month at 20:00 -->
|
||||||
|
<key>StartCalendarInterval</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>Day</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>Hour</key>
|
||||||
|
<integer>20</integer>
|
||||||
|
<key>Minute</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
# TODO add install for launchagent completely, and unisntall target using bootstrap?
|
|
||||||
#### Notes ####################################################################
|
#### Notes ####################################################################
|
||||||
# This build process is done in three stages (out-of-source build):
|
# This build process is done in three stages (out-of-source build):
|
||||||
# 1. copy source files to the local build directory.
|
# 1. copy source files to the local build directory.
|
||||||
@@ -20,7 +19,8 @@
|
|||||||
install-targets-script install-targets-conf install-targets-systemd \
|
install-targets-script install-targets-conf install-targets-systemd \
|
||||||
install-targets-cron install-targets-launchagent \
|
install-targets-cron install-targets-launchagent \
|
||||||
install-targets-schedtask uninstall-targets-schedtask \
|
install-targets-schedtask uninstall-targets-schedtask \
|
||||||
activate-launchagent deactivate-launchagent
|
activate-launchagent-backup deactivate-launchagent-backup \
|
||||||
|
activate-launchagent-chec deactivate-launchagent-check
|
||||||
|
|
||||||
#### Macros ###################################################################
|
#### Macros ###################################################################
|
||||||
NOW := $(shell date +%Y-%m-%d_%H:%M:%S)
|
NOW := $(shell date +%Y-%m-%d_%H:%M:%S)
|
||||||
@@ -52,8 +52,10 @@ MKDIR_PARENTS=sh -c '\
|
|||||||
|
|
||||||
# LaunchAgent names.
|
# LaunchAgent names.
|
||||||
UID := $(shell id -u)
|
UID := $(shell id -u)
|
||||||
LAUNCHAGENT = com.github.erikw.restic-backup
|
LAUNCHAGENT_BACKUP = com.github.erikw.restic-backup
|
||||||
LAUNCHAGENT_TARGET = gui/$(UID)/$(LAUNCHAGENT)
|
LAUNCHAGENT_CHECK = com.github.erikw.restic-check
|
||||||
|
LAUNCHAGENT_TARGET_BACKUP = gui/$(UID)/$(LAUNCHAGENT_BACKUP)
|
||||||
|
LAUNCHAGENT_TARGET_CHECK = gui/$(UID)/$(LAUNCHAGENT_CHECK)
|
||||||
|
|
||||||
# What to substitute $INSTALL_PREFIX in sources to.
|
# What to substitute $INSTALL_PREFIX in sources to.
|
||||||
# This can be useful to set to empty on commandline when building e.g. an AUR
|
# This can be useful to set to empty on commandline when building e.g. an AUR
|
||||||
@@ -126,6 +128,9 @@ DEST_TARGS_SYSTEMD = $(addprefix $(PREFIX)/, $(SRCS_SYSTEMD))
|
|||||||
DEST_TARGS_CRON = $(addprefix $(PREFIX)/, $(SRCS_CRON))
|
DEST_TARGS_CRON = $(addprefix $(PREFIX)/, $(SRCS_CRON))
|
||||||
DEST_TARGS_LAUNCHAGENT = $(addprefix $(LAUNCHAGENTDIR)/, $(SRCS_LAUNCHAGENT))
|
DEST_TARGS_LAUNCHAGENT = $(addprefix $(LAUNCHAGENTDIR)/, $(SRCS_LAUNCHAGENT))
|
||||||
|
|
||||||
|
DEST_LAUNCHAGENT_BACKUP = $(DEST_DIR_LAUNCHAGENT)/$(LAUNCHAGENT_BACKUP).plist
|
||||||
|
DEST_LAUNCHAGENT_CHECK = $(DEST_DIR_LAUNCHAGENT)/$(LAUNCHAGENT_CHECK).plist
|
||||||
|
|
||||||
INSTALLED_FILES = $(DEST_TARGS_SCRIPT) $(DEST_TARGS_CONF) \
|
INSTALLED_FILES = $(DEST_TARGS_SCRIPT) $(DEST_TARGS_CONF) \
|
||||||
$(DEST_TARGS_SYSTEMD) $(DEST_TARGS_CRON) \
|
$(DEST_TARGS_SYSTEMD) $(DEST_TARGS_CRON) \
|
||||||
$(DEST_TARGS_LAUNCHAGENT)
|
$(DEST_TARGS_LAUNCHAGENT)
|
||||||
@@ -158,10 +163,14 @@ install-systemd: install-targets-script install-targets-conf \
|
|||||||
# target: install-cron - Install cron setup.
|
# target: install-cron - Install cron setup.
|
||||||
install-cron: install-targets-script install-targets-conf install-targets-cron
|
install-cron: install-targets-script install-targets-conf install-targets-cron
|
||||||
|
|
||||||
# target: install-launchagent - Install LaunchAgent setup.
|
# target: install-launchagent - Install backup LaunchAgent setup.
|
||||||
install-launchagent: install-targets-script install-targets-conf \
|
install-launchagent: install-targets-script install-targets-conf \
|
||||||
install-targets-launchagent
|
install-targets-launchagent
|
||||||
|
|
||||||
|
# target: install-launchagent-check - Install check LaunchAgent setup.
|
||||||
|
# Intended to be run after install-launchagent, thus not requiring scripts/conf
|
||||||
|
#install-launchagent: install-targets-launchagent
|
||||||
|
|
||||||
# target: install-schedtask - Install Windows ScheduledTasks
|
# target: install-schedtask - Install Windows ScheduledTasks
|
||||||
install-schedtask: install-targets-script install-targets-conf \
|
install-schedtask: install-targets-script install-targets-conf \
|
||||||
install-targets-schedtask
|
install-targets-schedtask
|
||||||
@@ -218,12 +227,22 @@ $(DEST_DIR_LAUNCHAGENT)/%: $(BUILD_DIR_LAUNCHAGENT)/%
|
|||||||
$(DEST_DIR_MAC_LOG):
|
$(DEST_DIR_MAC_LOG):
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
|
||||||
# target: activate-launchagent - Activate the LaunchAgent.
|
# target: activate-launchagent-backup - Activate the backup LaunchAgent.
|
||||||
activate-launchagent:
|
activate-launchagent-backup:
|
||||||
launchctl bootstrap gui/$(UID) $(DEST_TARGS_LAUNCHAGENT)
|
launchctl bootstrap gui/$(UID) $(DEST_LAUNCHAGENT_BACKUP)
|
||||||
launchctl enable $(LAUNCHAGENT_TARGET)
|
launchctl enable $(LAUNCHAGENT_TARGET_BACKUP)
|
||||||
launchctl kickstart -p $(LAUNCHAGENT_TARGET)
|
launchctl kickstart -p $(LAUNCHAGENT_TARGET_BACKUP)
|
||||||
|
|
||||||
# target: deactivate-launchagent - Deactivate and remove the LaunchAgent.
|
# target: activate-launchagent-check - Activate the check LaunchAgent.
|
||||||
deactivate-launchagent:
|
activate-launchagent-check:
|
||||||
launchctl bootout $(LAUNCHAGENT_TARGET)
|
launchctl bootstrap gui/$(UID) $(DEST_LAUNCHAGENT_CHECK)
|
||||||
|
launchctl enable $(LAUNCHAGENT_TARGET_CHECK)
|
||||||
|
launchctl kickstart -p $(LAUNCHAGENT_TARGET_CHECK)
|
||||||
|
|
||||||
|
# target: deactivate-launchagent-backup - Remove the backup LaunchAgent.
|
||||||
|
deactivate-launchagent-backup:
|
||||||
|
launchctl bootout $(LAUNCHAGENT_TARGET_BACKUP)
|
||||||
|
|
||||||
|
# target: deactivate-launchagent-check - Remove the check LaunchAgent.
|
||||||
|
deactivate-launchagent-check:
|
||||||
|
launchctl bootout $(LAUNCHAGENT_TARGET_CHECK)
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ Many Linux distributions nowadays use [Systemd](https://en.wikipedia.org/wiki/Sy
|
|||||||
$ launchctl enable gui/$UID/com.github.erikw.restic-backup
|
$ launchctl enable gui/$UID/com.github.erikw.restic-backup
|
||||||
$ launchctl kickstart -p gui/$UID/com.github.erikw.restic-backup
|
$ launchctl kickstart -p gui/$UID/com.github.erikw.restic-backup
|
||||||
```
|
```
|
||||||
As a convenience, a shortcut for the above commands are `$ make activate-launchagent`.
|
As a convenience, a shortcut for the above commands are `$ make activate-launchagent-backup`.
|
||||||
1. Watch the first backup progress from the log files:
|
1. Watch the first backup progress from the log files:
|
||||||
```console
|
```console
|
||||||
$ tail -f ~/Library/Logs/restic/backup*
|
$ tail -f ~/Library/Logs/restic/backup*
|
||||||
@@ -155,7 +155,17 @@ Many Linux distributions nowadays use [Systemd](https://en.wikipedia.org/wiki/Sy
|
|||||||
$ restic snapshots
|
$ restic snapshots
|
||||||
```
|
```
|
||||||
1. (recommended) Enable the check job that verifies that the backups for the profile are all intact.
|
1. (recommended) Enable the check job that verifies that the backups for the profile are all intact.
|
||||||
TODO #81
|
* Homebrew install:
|
||||||
|
```console
|
||||||
|
$ brew services start restic-automatic-backup-scheduler-check
|
||||||
|
```
|
||||||
|
* `make` install:
|
||||||
|
```console
|
||||||
|
$ launchctl bootstrap gui/$UID ~/Library/LaunchAgents/com.github.erikw.restic-check.plist
|
||||||
|
$ launchctl enable gui/$UID/com.github.erikw.restic-check
|
||||||
|
$ launchctl kickstart -p gui/$UID/com.github.erikw.restic-check
|
||||||
|
```
|
||||||
|
As a convenience, a shortcut for the above commands are `$ make activate-launchagent-check`.
|
||||||
1. Consider more [optional features](#optional-features).
|
1. Consider more [optional features](#optional-features).
|
||||||
|
|
||||||
### Homebrew Setup Notes
|
### Homebrew Setup Notes
|
||||||
|
|||||||
Reference in New Issue
Block a user