#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "${SCRIPT_DIR}" # shellcheck source=../lib/common.sh source "${SCRIPT_DIR}/../lib/common.sh" drop_root_if_sudo "${SCRIPT_DIR}/restore.sh" "$@" ARCH="${1:-}" [[ -f "${ARCH}" && -f .env ]] || { echo "Использование: ./restore.sh archive.tar.gz"; exit 1; } # shellcheck disable=SC1091 source .env check_docker_access || exit 1 read -r -p "Перезаписать данные? (yes/no): " c [[ "${c}" == yes ]] || exit 0 BACKUP_ROOT="${NEXTCLOUD_BACKUP_DIR:-/var/nextcloud/backups}" RD="${BACKUP_ROOT}/restore_$$" ensure_host_dir "${BACKUP_ROOT}" mkdir -p "${RD}" tar xzf "${ARCH}" -C "${RD}" --strip-components=1 run_compose stop app cron ensure_host_dir "${NEXTCLOUD_CONFIG_DIR:?}" sudo find "${NEXTCLOUD_CONFIG_DIR}" -mindepth 1 -maxdepth 1 -exec rm -rf {} + sudo cp -a "${RD}/config/." "${NEXTCLOUD_CONFIG_DIR}/" fix_config_permissions "${NEXTCLOUD_CONFIG_DIR}" run_docker run --rm -v nextcloud_app_data:/data -v "${RD}:/b:ro" alpine:3.20 \ sh -c "rm -rf /data/* && tar xzf /b/nextcloud_data.tar.gz -C /data" run_compose exec -T db mariadb -u root -p"${MYSQL_ROOT_PASSWORD}" "${MYSQL_DATABASE}" < "${RD}/database.sql" run_compose start app cron rm -rf "${RD}" echo "[INFO] Восстановление завершено."