34 lines
1.3 KiB
Bash
34 lines
1.3 KiB
Bash
#!/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] Восстановление завершено."
|