backup-agents/gitea

93 lines
2.1 KiB
Bash
Executable file

#!/bin/bash
restoreDir=/etc/restore
giteaDir="/var/backups/gitea"
scriptDir="$(dirname "$0")"
readConfig() {
if [[ -r "${scriptDir}/../config/gitea_backup.cfg" ]]; then
source "${scriptDir}/../config/gitea_backup.cfg"
fi
}
check() {
GITEA_CONFIG=${GITEA_CONFIG:-/etc/gitea/app.ini}
if [[ ! -r "$GITEA_CONFIG" ]]; then
echo "ERROR: Cannot read gitea app.ini in $GITEA_CONFIG"
return 4
fi
GITEA_USER=${GITEA_USER:-git}
GITEA_GROUP=${GITEA_GROUP:-git}
GITEA_HOME=${GITEA_HOME:-$(getent passwd ${GITEA_USER} | cut -f6 -d:)}
if [[ ! -d "$GITEA_HOME" ]]; then
echo "ERROR: Cannot find Gitea home directory"
return 5
fi
if [[ -n "$GITEA_BIN" ]]; then
if [[ -x "${GITEA_BIN}" ]]; then
echo "Found Gitea in $GITEA_BIN"
else
echo "FATAL: Cannot execute Gitea"
return 3
fi
else
if ! which gitea &>/dev/null; then
echo "Cannot find Gitea in PATH"
return 2
fi
if [[ -x "$(which gitea)" ]]; then
GITEA_BIN="$(which gitea)"
echo "Found Gitea in $GITEA_BIN"
else
echo "FATAL: Cannot execute Gitea"
return 3
fi
fi
if [[ -d "$giteaDir" ]]; then
echo "Cleaning out old Gitea backups..."
rm -f "$giteaDir"/* || return 1
else
mkdir -p "$giteaDir" | return 1
chgrp "$GITEA_GROUP" "$giteaDir"
chmod g+wx "$giteaDir"
fi
}
runBackups() {
local backupDate
backupDate=$(date +"%Y-%m-%d")
giteaHome=$(getent passwd git | cut -f6 -d:)
pushd "${giteaDir}" &>/dev/null
sudo -u "$GITEA_USER" "${GITEA_BIN}" dump --config "${GITEA_CONFIG}" --type tar.xz --file - > "${giteaDir}/gitea-dump-${backupDate}.tar.xz"
popd &>/dev/null
}
hook_before() {
check || exit $?
runBackups || exit $?
}
hook_after() {
:
}
hook_fail() {
:
}
hook_final() {
:
}
case "$1" in
before) hook_before || exit $?;;
after) hook_after || exit $?;;
fail) hook_fail || exit $?;;
finally) hook_final || exit $?;;
esac