mirror of
https://github.com/auricom/home-cluster.git
synced 2025-09-17 18:24:14 +02:00
52 lines
1.5 KiB
Bash
Executable File
52 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -o nounset
|
|
set -o errexit
|
|
|
|
mkdir -p ~/.ssh
|
|
cp /opt/id_rsa ~/.ssh/id_rsa
|
|
chmod 600 ~/.ssh/id_rsa
|
|
|
|
printf -v aws_access_key_id_str %q "$TRUENAS_AWS_ACCESS_KEY_ID"
|
|
printf -v aws_secret_access_key_str %q "$TRUENAS_AWS_SECRET_ACCESS_KEY"
|
|
printf -v secret_internal_domain_str %q "$SECRET_INTERNAL_DOMAIN"
|
|
|
|
|
|
ssh -o StrictHostKeyChecking=no root@${HOSTNAME}.${SECRET_INTERNAL_DOMAIN} "/bin/bash -s $aws_access_key_id_str $aws_secret_access_key_str $secret_internal_domain_str" << 'EOF'
|
|
|
|
set -o nounset
|
|
set -o errexit
|
|
|
|
AWS_ACCESS_KEY_ID=$1
|
|
AWS_SECRET_ACCESS_KEY=$2
|
|
SECRET_INTERNAL_DOMAIN=$3
|
|
|
|
config_filename="$(date "+%Y%m%d-%H%M%S").tar"
|
|
|
|
http_host=s3.${SECRET_INTERNAL_DOMAIN}
|
|
http_request_date=$(date -R)
|
|
http_content_type="application/x-tar"
|
|
http_filepath="truenas/$(hostname)/${config_filename}"
|
|
http_signature=$(
|
|
printf "PUT\n\n${http_content_type}\n%s\n/%s" "${http_request_date}" "${http_filepath}" \
|
|
| openssl sha1 -hmac "${AWS_SECRET_ACCESS_KEY}" -binary \
|
|
| base64
|
|
)
|
|
|
|
echo "Creating backup archive ..."
|
|
|
|
tar -cvlf /tmp/backup-${config_filename} --strip-components=2 /data/freenas-v1.db /data/pwenc_secret
|
|
|
|
echo "Upload backup to s3 bucket ..."
|
|
curl -fsSL \
|
|
-X PUT -T "/tmp/backup-${config_filename}" \
|
|
-H "Host: ${http_host}" \
|
|
-H "Date: ${http_request_date}" \
|
|
-H "Content-Type: ${http_content_type}" \
|
|
-H "Authorization: AWS ${AWS_ACCESS_KEY_ID}:${http_signature}" \
|
|
"https://s3.${SECRET_INTERNAL_DOMAIN}/${http_filepath}"
|
|
|
|
rm /tmp/backup-*.tar
|
|
|
|
EOF
|