mirror of
https://github.com/Noratrieb/vps.git
synced 2026-01-14 16:55:00 +01:00
move
This commit is contained in:
parent
f456a5c626
commit
0949cba7be
92 changed files with 19 additions and 58 deletions
62
nix/modules/backup/backup.sh
Executable file
62
nix/modules/backup/backup.sh
Executable file
|
|
@ -0,0 +1,62 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
time="$(date --iso-8601=s --utc)"
|
||||
echo "Starting backup procedure with time=$time"
|
||||
|
||||
dir=$(mktemp -d)
|
||||
echo "Setting workdir to $dir"
|
||||
cd "$dir"
|
||||
export HOME="$dir"
|
||||
# Delete the temporary directory afterwards.
|
||||
# Yes, this variable should expand now.
|
||||
# shellcheck disable=SC2064
|
||||
trap "rm -rf $dir" EXIT
|
||||
|
||||
echo "Logging into garage"
|
||||
export MC_CONFIG_DIR="$dir"
|
||||
mc alias set garage "$S3_ENDPOINT" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" --api S3v4
|
||||
|
||||
mc ls garage/backups
|
||||
|
||||
files=$(jq -c '.files[]' "$CONFIG_FILE")
|
||||
pg_dumps=$(jq -c '.pg_dumps[]' "$CONFIG_FILE")
|
||||
|
||||
echo "$files"
|
||||
echo "$pg_dumps"
|
||||
|
||||
IFS=$'\n'
|
||||
for file_config in $files; do
|
||||
filepath=$(echo "$file_config" | jq -r ".file")
|
||||
app=$(echo "$file_config" | jq -r ".app")
|
||||
|
||||
echo "Backing up app $app FILE $filepath..."
|
||||
tmppath="$dir/file"
|
||||
xz < "$filepath" > "$tmppath"
|
||||
|
||||
echo "Uplading file"
|
||||
mc put "$tmppath" "garage/$S3_BUCKET/$app/$time/$(basename "$filepath").xz"
|
||||
echo "Uploaded file"
|
||||
done
|
||||
|
||||
for pg_config in $pg_dumps; do
|
||||
app=$(echo "$pg_config" | jq -r ".app")
|
||||
containerName=$(echo "$pg_config" | jq -r ".containerName")
|
||||
dbName=$(echo "$pg_config" | jq -r ".dbName")
|
||||
userName=$(echo "$pg_config" | jq -r ".userName")
|
||||
|
||||
echo "Backing up app $app POSTGRES $containerName/$dbName..."
|
||||
tmppath="$dir/file"
|
||||
|
||||
podman exec "$containerName" pg_dump --format=custom --file /tmp/db.bak \
|
||||
--host "127.0.0.1" --dbname "$dbName" --username "$userName"
|
||||
podman cp "$containerName:/tmp/db.bak" "$tmppath"
|
||||
xz -f "$tmppath" > "$tmppath.xz"
|
||||
|
||||
echo "Uplading file"
|
||||
mc put "$tmppath.xz" "garage/$S3_BUCKET/$app/$time/$dbName.bak.xz"
|
||||
echo "Uploaded file"
|
||||
|
||||
podman exec "$containerName" rm "/tmp/db.bak"
|
||||
done
|
||||
Loading…
Add table
Add a link
Reference in a new issue