SHA256
Добавлен контур server-backup для shineup.me и регламент обновляемых бэкапов
This commit is contained in:
+55
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
REMOTE_HOST="${REMOTE_HOST:-player@shineup.me}"
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
||||
TODAY="$(date +%F)"
|
||||
DEST_NAME="${DEST_NAME:-${TODAY}}"
|
||||
DEST_DIR="${ROOT_DIR}/archive/${DEST_NAME}"
|
||||
RSYNC_REMOTE_SUDO=(--rsync-path="sudo -n rsync")
|
||||
|
||||
mkdir -p "${DEST_DIR}"
|
||||
|
||||
echo "[1/4] Создаю структуру бэкапа: ${DEST_DIR}"
|
||||
mkdir -p "${DEST_DIR}/home-player" "${DEST_DIR}/etc-system" "${DEST_DIR}/var-lib/docker-images"
|
||||
|
||||
echo "[2/4] Копирую основные данные /home/player"
|
||||
rsync -aH --delete \
|
||||
"${RSYNC_REMOTE_SUDO[@]}" \
|
||||
--exclude='SHiNE/shine-server/logs/' \
|
||||
--exclude='SHiNE/**/.elaira_logs/' \
|
||||
--exclude='**/*.log' \
|
||||
"${REMOTE_HOST}:/home/player/SHiNE/" "${DEST_DIR}/home-player/SHiNE/"
|
||||
|
||||
rsync -aH --delete "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/home/player/sites/" "${DEST_DIR}/home-player/sites/"
|
||||
rsync -aH --delete "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/home/player/gitea/" "${DEST_DIR}/home-player/gitea/"
|
||||
rsync -aH --delete "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/home/player/agent-memory/" "${DEST_DIR}/home-player/agent-memory/"
|
||||
|
||||
echo "[3/4] Копирую системные конфиги"
|
||||
rsync -aH --delete "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/etc/caddy/" "${DEST_DIR}/etc-system/caddy/"
|
||||
rsync -aH --delete "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/var/lib/caddy/" "${DEST_DIR}/var-lib/caddy/"
|
||||
rsync -aH "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/etc/turnserver.conf" "${DEST_DIR}/etc-system/turnserver.conf"
|
||||
rsync -aH "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/etc/systemd/system/shine-server.service" "${DEST_DIR}/etc-system/"
|
||||
rsync -aH "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/etc/systemd/system/agent-memory.service" "${DEST_DIR}/etc-system/"
|
||||
ssh "${REMOTE_HOST}" 'sudo -n docker image save gitea/gitea:1.22.6' > "${DEST_DIR}/var-lib/docker-images/gitea_gitea_1.22.6.tar"
|
||||
|
||||
echo "[4/4] Создаю манифест"
|
||||
{
|
||||
echo "backup_date=${TODAY}"
|
||||
echo "remote_host=${REMOTE_HOST}"
|
||||
echo "created_at_utc=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||
echo
|
||||
echo "sizes:"
|
||||
du -sh "${DEST_DIR}/home-player/SHiNE" || true
|
||||
du -sh "${DEST_DIR}/home-player/sites" || true
|
||||
du -sh "${DEST_DIR}/home-player/gitea" || true
|
||||
du -sh "${DEST_DIR}/home-player/agent-memory" || true
|
||||
du -sh "${DEST_DIR}/etc-system" || true
|
||||
du -sh "${DEST_DIR}/var-lib/caddy" || true
|
||||
du -sh "${DEST_DIR}/var-lib/docker-images" || true
|
||||
echo
|
||||
echo "total:"
|
||||
du -sh "${DEST_DIR}" || true
|
||||
} > "${DEST_DIR}/MANIFEST.txt"
|
||||
|
||||
echo "Готово: ${DEST_DIR}"
|
||||
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
REMOTE_HOST="${REMOTE_HOST:-player@shineup.me}"
|
||||
SCHEME_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
CAP_DIR="${SCHEME_DIR}/captures"
|
||||
CFG_DIR="${SCHEME_DIR}/configs"
|
||||
|
||||
mkdir -p "${CAP_DIR}" "${CFG_DIR}/systemd"
|
||||
|
||||
echo "[1/3] Обновляю инвентарь"
|
||||
ssh "${REMOTE_HOST}" 'hostnamectl --static; echo ---; uname -a; echo ---; df -h; echo ---; lsblk -f' > "${CAP_DIR}/01_host_disk.txt"
|
||||
ssh "${REMOTE_HOST}" 'systemctl list-unit-files --type=service --state=enabled --no-pager' > "${CAP_DIR}/02_enabled_services.txt"
|
||||
ssh "${REMOTE_HOST}" 'sudo -n systemctl list-units --type=service --state=running --no-pager' > "${CAP_DIR}/03_running_services.txt"
|
||||
ssh "${REMOTE_HOST}" 'sudo -n ss -ltnp' > "${CAP_DIR}/04_listen_ports.txt"
|
||||
ssh "${REMOTE_HOST}" 'sudo -n docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"' > "${CAP_DIR}/05_docker_ps.txt"
|
||||
ssh "${REMOTE_HOST}" 'du -sh /home/player/* 2>/dev/null | sort -h' > "${CAP_DIR}/06_home_player_sizes.txt"
|
||||
ssh "${REMOTE_HOST}" 'sudo -n du -xhd1 /var 2>/dev/null | sort -h' > "${CAP_DIR}/07_var_sizes.txt"
|
||||
|
||||
echo "[2/3] Обновляю ключевые конфиги"
|
||||
rsync -a "${REMOTE_HOST}:/home/player/SHiNE/caddy/Caddyfile" "${CFG_DIR}/Caddyfile"
|
||||
rsync -a "${REMOTE_HOST}:/etc/turnserver.conf" "${CFG_DIR}/turnserver.conf"
|
||||
rsync -a "${REMOTE_HOST}:/etc/systemd/system/shine-server.service" "${CFG_DIR}/systemd/"
|
||||
rsync -a "${REMOTE_HOST}:/etc/systemd/system/agent-memory.service" "${CFG_DIR}/systemd/"
|
||||
|
||||
echo "[3/3] Метка обновления"
|
||||
date -u +%Y-%m-%dT%H:%M:%SZ > "${CAP_DIR}/UPDATED_AT_UTC.txt"
|
||||
|
||||
echo "Готово: ${SCHEME_DIR}"
|
||||
Reference in New Issue
Block a user