47 lines
1.1 KiB
Bash
Executable File
47 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
dumpfile="dump.sql.custom"
|
|
|
|
tmpdir="$(mktemp -d -p "${PWD}")"
|
|
|
|
function check_for_hash() {
|
|
local ret=0
|
|
echo "Checking if hash ${1} is present"
|
|
aws s3 ls "s3://${S3_BUCKET}/sums/${1}" || ret=$?
|
|
echo "Returned: ${ret}"
|
|
return $ret
|
|
}
|
|
|
|
function create_and_upload() {
|
|
local sum=$1
|
|
local backup_file
|
|
backup_file="$(date +%Y/%m/backup-%d-%H-%M-%S.tar.gz)"
|
|
tar -zc . | aws s3 cp - "s3://${S3_BUCKET}/${backup_file}"
|
|
aws s3api put-object --bucket "${S3_BUCKET}" --key "sums/${sum}"
|
|
}
|
|
|
|
chmod ugo+wX "${tmpdir}"
|
|
|
|
pushd "${tmpdir}"
|
|
|
|
rm -rf "${dumpfile}"
|
|
touch "${dumpfile}"
|
|
chmod ugo+w "${dumpfile}"
|
|
sudo -u postgres -- pg_dump --no-owner --no-privileges --clean --if-exists --quote-all-identifiers "${DATABASE_URL}" -F plain -f "${dumpfile}"
|
|
|
|
cp -r "${ROOT_DIR}/data" "./data"
|
|
cp "${ROOT_DIR}/.env" "./.env"
|
|
cp "${ROOT_DIR}/bitwarden.exceede.com.conf" "./bitwarden.exceede.com.conf"
|
|
|
|
# remove icon_cache
|
|
rm -rf ./data/icon_cache
|
|
|
|
sum=$(find . -type f -exec md5sum {} + | LC_ALL=C sort | md5sum | cut -d ' ' -f 1)
|
|
|
|
check_for_hash "$sum" || create_and_upload "${sum}"
|
|
|
|
popd
|
|
rm -rf "${tmpdir}"
|