96 lines
2.0 KiB
Bash
Executable File
96 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
REPO=
|
|
ACTION=
|
|
|
|
if [[ $# -lt 2 ]]; then
|
|
echo "Command not specified"
|
|
echo
|
|
echo "clerie-backup REPO ACTION"
|
|
echo
|
|
echo "ACTION: restic,backup"
|
|
echo
|
|
echo "Available REPOs (/etc/clerie-backup/):"
|
|
echo
|
|
if [[ -d "/etc/clerie-backup" ]]; then
|
|
find "/etc/clerie-backup/" -mindepth 1 -maxdepth 1 -type d -printf "%f\n" | sort -d
|
|
fi
|
|
exit 1
|
|
fi
|
|
|
|
REPO="$1"
|
|
shift
|
|
|
|
ACTION="$1"
|
|
shift
|
|
|
|
CONFIG_DIR="/etc/clerie-backup/${REPO}"
|
|
if [[ ! -d "${CONFIG_DIR}" ]]; then
|
|
echo "Config dir ${CONFIG_DIR} for ${REPO} does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
ISSUE_EXIST=
|
|
if [[ ! -f "${CONFIG_DIR}/repo_password" ]]; then
|
|
echo "File ${CONFIG_DIR}/repo_password not found"
|
|
ISSUE_EXIST=1
|
|
fi
|
|
if [[ ! -f "${CONFIG_DIR}/repo_url" ]]; then
|
|
echo "File ${CONFIG_DIR}/repo_url not found"
|
|
ISSUE_EXIST=1
|
|
fi
|
|
if [[ ! -f "${CONFIG_DIR}/auth_username" ]]; then
|
|
echo "File ${CONFIG_DIR}/auth_username not found"
|
|
ISSUE_EXIST=1
|
|
fi
|
|
if [[ ! -f "${CONFIG_DIR}/auth_password" ]]; then
|
|
echo "File ${CONFIG_DIR}/auth_password not found"
|
|
ISSUE_EXIST=1
|
|
fi
|
|
if [[ -n "${ISSUE_EXIST}" ]]; then
|
|
exit 1
|
|
fi
|
|
|
|
RESTIC_PASSWORD_FILE="${CONFIG_DIR}/repo_password"
|
|
export RESTIC_PASSWORD_FILE
|
|
RESTIC_REPOSITORY="rest:$(cat "${CONFIG_DIR}/repo_url")"
|
|
export RESTIC_REPOSITORY
|
|
RESTIC_REST_USERNAME="$(cat "${CONFIG_DIR}/auth_username")"
|
|
export RESTIC_REST_USERNAME
|
|
RESTIC_REST_PASSWORD="$(cat "${CONFIG_DIR}/auth_password")"
|
|
export RESTIC_REST_PASSWORD
|
|
RESTIC_PROGRESS_FPS="0.1"
|
|
export RESTIC_PROGRESS_FPS
|
|
RESTIC_CACHE_DIR="/var/cache/restic"
|
|
export RESTIC_CACHE_DIR
|
|
|
|
case "${ACTION}" in
|
|
restic)
|
|
restic "$@"
|
|
;;
|
|
backup)
|
|
ISSUE_EXIST=
|
|
if [[ ! -f "${CONFIG_DIR}/excludes" ]]; then
|
|
echo "File ${CONFIG_DIR}/excludes not found"
|
|
ISSUE_EXIST=1
|
|
fi
|
|
if [[ ! -f "${CONFIG_DIR}/files" ]]; then
|
|
echo "File ${CONFIG_DIR}/files not found"
|
|
ISSUE_EXIST=1
|
|
fi
|
|
if [[ -n "${ISSUE_EXIST}" ]]; then
|
|
exit 1
|
|
fi
|
|
|
|
restic snapshots --latest 1 || restic init
|
|
|
|
restic backup --exclude-file "${CONFIG_DIR}/excludes" --files-from "${CONFIG_DIR}/files"
|
|
;;
|
|
*)
|
|
echo "Unsupported ACTION: ${ACTION}"
|
|
exit 1
|
|
;;
|
|
esac
|