2019-04-13 20:40:37 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
set -o nounset
|
|
|
|
|
set -o errexit
|
2019-04-13 20:51:27 +02:00
|
|
|
set -o xtrace
|
|
|
|
|
|
2019-04-13 22:10:45 +02:00
|
|
|
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
|
|
|
|
|
|
|
|
if [[ ! -e "${dir}/venv" ]] ; then
|
|
|
|
|
python3 -m venv "${dir}/venv"
|
2019-04-13 22:04:29 +02:00
|
|
|
fi
|
2019-04-13 22:10:45 +02:00
|
|
|
source "${dir}/venv/bin/activate"
|
|
|
|
|
command -v aws || pip install -r "${dir}/requirements.txt"
|
2019-04-13 22:04:29 +02:00
|
|
|
|
2019-04-13 22:10:45 +02:00
|
|
|
export GNUPGHOME="$(mktemp -d)"
|
2019-04-13 21:10:58 +02:00
|
|
|
|
2019-04-13 20:51:27 +02:00
|
|
|
bucket="${1}" ; shift
|
|
|
|
|
name="${1}" ; shift
|
|
|
|
|
backup_source="${1}" ; shift
|
2019-04-13 20:40:37 +02:00
|
|
|
|
2019-04-13 21:10:58 +02:00
|
|
|
install --directory --owner $(id -u) --group $(id -g) --mode 700 "${GNUPGHOME}"
|
|
|
|
|
|
2019-04-13 20:40:37 +02:00
|
|
|
cleanup() {
|
2019-04-13 21:10:58 +02:00
|
|
|
rm -rf "${GNUPGHOME}"
|
2019-04-13 20:40:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trap cleanup EXIT
|
|
|
|
|
|
|
|
|
|
tmpgpg() {
|
|
|
|
|
gpg \
|
|
|
|
|
--batch \
|
|
|
|
|
--no-default-keyring \
|
|
|
|
|
--no-options \
|
2019-04-13 21:10:58 +02:00
|
|
|
--trust-model always \
|
2019-04-13 20:40:37 +02:00
|
|
|
"${@}"
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-13 22:10:45 +02:00
|
|
|
tmpgpg --import "${dir}/pubkey.asc"
|
2019-04-13 23:07:11 +02:00
|
|
|
find \
|
|
|
|
|
"${backup_source}" \
|
|
|
|
|
\( \
|
|
|
|
|
-regex "${backup_source}.*nextcloud/.*/files_trashbin" \
|
|
|
|
|
-o \
|
|
|
|
|
-regex "${backup_source}.*nextcloud/nextcloud.log" \
|
|
|
|
|
-o \
|
2019-04-13 23:18:28 +02:00
|
|
|
-regex "${backup_source}.*registry/docker/registry" \
|
2019-04-13 23:07:11 +02:00
|
|
|
-o \
|
|
|
|
|
-regex "${backup_source}.*gogs/.*/gogs.log.*" \
|
|
|
|
|
-o \
|
|
|
|
|
-regex "${backup_source}.*gogs/gogs/data/sessions/.*" \
|
2019-04-13 23:18:28 +02:00
|
|
|
-o \
|
|
|
|
|
-regex "${backup_source}.*/cache/.*" \
|
2019-04-13 23:07:11 +02:00
|
|
|
\) \
|
|
|
|
|
-prune \
|
|
|
|
|
-o \
|
|
|
|
|
-print0 \
|
|
|
|
|
| tar \
|
2019-04-13 20:40:37 +02:00
|
|
|
--create \
|
|
|
|
|
--verbose \
|
2019-04-13 21:16:17 +02:00
|
|
|
--gzip \
|
2019-04-13 20:40:37 +02:00
|
|
|
--one-file-system \
|
2019-04-13 23:07:11 +02:00
|
|
|
--null \
|
|
|
|
|
--no-recursion \
|
|
|
|
|
--files-from - \
|
2019-04-13 20:40:37 +02:00
|
|
|
--file - \
|
|
|
|
|
| tmpgpg \
|
|
|
|
|
--output - \
|
|
|
|
|
--encrypt \
|
2019-04-13 20:51:27 +02:00
|
|
|
--recipient 0x078A167A8741BD30 \
|
2019-04-13 21:10:58 +02:00
|
|
|
| aws \
|
|
|
|
|
s3 cp \
|
2019-04-13 20:40:37 +02:00
|
|
|
--storage-class=DEEP_ARCHIVE \
|
|
|
|
|
- \
|
2019-04-13 21:16:17 +02:00
|
|
|
"s3://${bucket}/${name}-$(date --utc -Iseconds).tar.gz.gpg"
|