captaincore/app/backup/get-generate
2023-03-17 09:26:48 -04:00

62 lines
No EOL
2.1 KiB
Bash

#!/usr/bin/env bash
#
# Fetches backups for a site
#
# `captaincore backup get-generate <site> <backup-id>`
#
if [ ${#@} -eq 0 ]; then
echo -e "${COLOR_RED}Error:${COLOR_NORMAL} Please specify <site> and <backup-id>."
exit 1
fi
while read config; do
if [[ "$config" == "Error:"* ]]; then
continue
fi
declare "$config"
done <<< "$(php ${CAPTAINCORE_PATH}/lib/local-scripts/configs.php fetch)"
site=$1
backup_id=$2
# Extract environment
if [[ "$site" == *"-staging"* ]]; then
environment=staging
fi
if [[ "$site" == *"-production"* ]]; then
environment=production
fi
if [[ "$site" != *"-"* ]]; then
environment=production
fi
# Load site configs
IFS=$'\n'$'\r'; for line in $(captaincore site get $site --bash --captain-id=$CAPTAIN_ID); do declare "$line"; done
cd ${CAPTAINCORE_PATH}/data
if [[ "$backup_id" == "" ]] || [[ "$backup_id" == *"--"* ]]; then
backup_id=$( wp eval-file ${CAPTAINCORE_PATH}/lib/local-scripts/backups-get-latest.php site=$site site_id=$site_id environment=$environment )
if [[ "$backup_id" == "" ]]; then
captaincore backup list-generate ${site}-${environment} --captain-id=$CAPTAIN_ID
backup_id=$( wp eval-file ${CAPTAINCORE_PATH}/lib/local-scripts/backups-get-latest.php site=$site site_id=$site_id environment=$environment )
fi
echo "Backup id not selected. Generating response for latest ID $backup_id"
fi
if [[ $( restic snapshots --repo="rclone:${rclone_backup}/${site}_${site_id}/${environment}/restic-repo" --password-file="${CAPTAINCORE_PATH}/data/restic.key" ) == "" ]]; then
echo -e "${COLOR_RED}Error:${COLOR_NORMAL} Backup repo not found."
exit 1
fi
backup_snapshot="$path/${site}_${site_id}/${environment}/backups/snapshot-${backup_id}.json"
echo "Generating ${site}_${site_id}/${environment}/backups/snapshot-${backup_id}.json"
wp eval-file ${CAPTAINCORE_PATH}/lib/local-scripts/backups-get.php backup_id=$backup_id site=$site site_id=$site_id environment=$environment > "$backup_snapshot"
if [ -f "$backup_snapshot" ]; then
rclone move "$backup_snapshot" "${rclone_upload}${site}_${site_id}/${environment}/backups/"
fi