Is there any way to restore your site from backup in the terminal?

להלן הסקריפט הפועל שאני משתמש בו כדי לשחזר את prod ל-dev ול-test:

#!/bin/sh
set +x
set -e
# This script restore the latest productive backup to the test/dev environment
CONTAINER_NAME=app-test
LATEST_BACKUP=$(mc ls s3/backup-prod/default | tail -n 1 | cut -d ' ' -f 5)
mc cp s3/backup-prod/default/${LATEST_BACKUP} /tmp
# ensure /var/www/discourse/public/backups/default/ exists with the proper ownership
docker exec -i ${CONTAINER_NAME} sh -c "mkdir -p /var/www/discourse/public/backups/default/ && chown -R discourse:www-data /var/www/discourse/public/backups/default/"
cat /tmp/${LATEST_BACKUP} | docker exec -i ${CONTAINER_NAME} sh -c "cat - > /var/www/discourse/public/backups/default/${LATEST_BACKUP}"
docker exec -i ${CONTAINER_NAME} sh -x << EOF
discourse enable_restore
rails runner "SiteSetting.set('backup_location', 'local')"
discourse restore ${LATEST_BACKUP}
discourse disable_restore
rm -f /var/www/discourse/public/backups/default/${LATEST_BACKUP}
EOF
# rebuild container
cd /var/lib/discourse/discourse_docker
stdbuf -oL -eL ./launcher rebuild ${CONTAINER_NAME} 2>&1 | sed 's/DISCOURSE_google_oauth2_client_secret=[^ ]*/DIS="../../secrets/google-oauth2-client-secret.json"/'
cd -
rm -f /tmp/${LATEST_BACKUP}

היה חסר rails runner "SiteSetting.set('backup_location', 'local')" ומנע את השחזור מקובץ ה-tarball של הגיבוי.

יש לציין כי הפלט של סקריפט ה-launcher היה צריך לעבור עריכה מכיוון שהוא היה חושף סודות בפלט שלו, במיוחד כאשר הוא בוצע דרך משימת CI/CD גלויה.