4 Commits

Author SHA1 Message Date
1e3638d474 version bump
All checks were successful
continuous-integration/drone/tag Build is passing
2024-09-24 16:09:23 +02:00
7b84ca86f4 docs 2024-09-24 16:09:10 +02:00
d856635747 added destination aliveness check 2024-09-24 15:50:22 +02:00
693ded862c fix name
All checks were successful
continuous-integration/drone/tag Build is passing
2024-09-18 18:49:03 +02:00
4 changed files with 57 additions and 6 deletions

View File

@@ -208,7 +208,7 @@ If you develop a new program, and you want it to be of the greatest possible use
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.
btrkbk-cron btrbk-cron
Copyright (C) 2024 paspo Copyright (C) 2024 paspo
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
@@ -221,7 +221,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:
btrkbk-cron Copyright (C) 2024 paspo btrbk-cron Copyright (C) 2024 paspo
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.

View File

@@ -1,4 +1,4 @@
# btrkbk-cron # btrbk-cron
btrbk cron wrapper with healthchecks support. btrbk cron wrapper with healthchecks support.
@@ -12,6 +12,21 @@ Run this:
debuild -i -us -uc debuild -i -us -uc
``` ```
## New release
Add comments:
```sh
dch -v 0.2 "comment 1"
dch -v 0.2 "comment 2"
```
Release:
```sh
dch --release --distribution stable
```
## Installation ## Installation
Just install the package as usual. Just install the package as usual.

View File

@@ -4,8 +4,11 @@ CONF=/etc/btrbk/btrbk-cron.conf
LOGFILE=$(mktemp) LOGFILE=$(mktemp)
trap 'rm -f -- "${LOGFILE}"' EXIT trap 'rm -f -- "${LOGFILE}"' EXIT
echo "---" | tee -a "${LOGFILE}"
echo "Start btrbk-cron: $(date||true)" | tee -a "${LOGFILE}"
if [[ ! -f "${CONF}" ]] ; then if [[ ! -f "${CONF}" ]] ; then
echo "Warning: Can't read config file (${CONF}), healthchecks disabled." echo "Warning: Can't read config file (${CONF}), healthchecks disabled." | tee -a "${LOGFILE}"
else else
# shellcheck disable=SC1090,SC1091 # shellcheck disable=SC1090,SC1091
source "${CONF}" source "${CONF}"
@@ -16,10 +19,37 @@ HEALTHCHECK_ENABLE=${HEALTHCHECK_ENABLE:-false}
CURLOPTS=(-fsS -m 10 --retry 5) CURLOPTS=(-fsS -m 10 --retry 5)
if [[ ! -d /run/btrbk ]] ; then if [[ ! -d /run/btrbk ]] ; then
echo "Warning: Creating missing directory: /run/btrbk " | tee -a "${LOGFILE}"
mkdir -p /run/btrbk mkdir -p /run/btrbk
fi fi
echo "---" | tee -a "${LOGFILE}" if [[ "${HEALTHCHECK_ENABLE}" = "true" ]] ; then
echo "Info: Healthchecks enabled with URL: ${HEALTHCHECK_URL}"
else
echo "Info: Healthchecks disabled"
fi
HOST=$(grep -E '^[\ \t]*target[\ \t]+send-receive' /etc/btrbk/btrbk.conf)
# TODO: support for dashes in hostname and IPv6 ("[2001:db8::7]")
HOST=$(echo "${HOST}" | sed -r 's/.*ssh:\/\/([0-9\.a-zA-Z]+).*/\1/g' )
IDENTITYFILE=$(grep -E '^[\ \t]*ssh_identity[\ \t].*' /etc/btrbk/btrbk.conf )
IDENTITYFILE=$(echo "${IDENTITYFILE}" | sed -r 's/.*ssh_identity[\ \t]+//g')
SSHUSER=$(grep -E '^[\ \t]*ssh_user[\ \t].*' /etc/btrbk/btrbk.conf )
SSHUSER=$(echo "${SSHUSER}" | sed -r 's/.*ssh_user[\ \t]+//g')
SSH_OK=$(ssh -i "${IDENTITYFILE}" "${SSHUSER}@${HOST}" "which btrfs")
if [[ "${SSH_OK}" = "" ]] ; then
echo "Warning: exiting because of backup destination unreachable" | tee -a "${LOGFILE}"
if [[ "${HEALTHCHECK_ENABLE}" = "true" ]] ; then
curl "${CURLOPTS[@]}" --data-binary "@${LOGFILE}" "${HEALTHCHECK_URL}/log"
fi
rm -f -- "${LOGFILE}"
exit 1
fi
echo "Start backup: $(date||true)" | tee -a "${LOGFILE}" echo "Start backup: $(date||true)" | tee -a "${LOGFILE}"
if [[ "${HEALTHCHECK_ENABLE}" = "true" ]] ; then if [[ "${HEALTHCHECK_ENABLE}" = "true" ]] ; then
curl "${CURLOPTS[@]}" "${HEALTHCHECK_URL}/start" curl "${CURLOPTS[@]}" "${HEALTHCHECK_URL}/start"

8
debian/changelog vendored
View File

@@ -1,4 +1,10 @@
btrbk-cron (0.1) UNRELEASED; urgency=medium btrbk-cron (0.2) stable; urgency=medium
* Added destination aliveness check
-- Paolo Asperti <paolo@asperti.com> Tue, 24 Sep 2024 16:08:04 +0200
btrbk-cron (0.1) stable; urgency=medium
* Initial release. * Initial release.