SHA256
Сделать backup production устойчивым к отсутствующим файлам
This commit is contained in:
+2
-2
@@ -1,2 +1,2 @@
|
|||||||
client.version=1.2.333
|
client.version=1.2.334
|
||||||
server.version=1.2.305
|
server.version=1.2.306
|
||||||
|
|||||||
@@ -10,6 +10,32 @@ RSYNC_REMOTE_SUDO=(--rsync-path="sudo -n rsync")
|
|||||||
|
|
||||||
mkdir -p "${DEST_DIR}"
|
mkdir -p "${DEST_DIR}"
|
||||||
|
|
||||||
|
remote_exists() {
|
||||||
|
ssh "${REMOTE_HOST}" "test -e '$1'"
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_optional_dir() {
|
||||||
|
local remote_path="$1"
|
||||||
|
local local_path="$2"
|
||||||
|
if remote_exists "$remote_path"; then
|
||||||
|
rsync -aH --delete "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:${remote_path}/" "${local_path}/"
|
||||||
|
else
|
||||||
|
mkdir -p "${local_path}"
|
||||||
|
echo "missing: ${remote_path}" > "${local_path}/MISSING.txt"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_optional_file() {
|
||||||
|
local remote_path="$1"
|
||||||
|
local local_path="$2"
|
||||||
|
if remote_exists "$remote_path"; then
|
||||||
|
rsync -aH "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:${remote_path}" "${local_path}"
|
||||||
|
else
|
||||||
|
mkdir -p "$(dirname "${local_path}")"
|
||||||
|
echo "missing: ${remote_path}" > "${local_path}.MISSING.txt"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
echo "[1/4] Создаю структуру бэкапа: ${DEST_DIR}"
|
echo "[1/4] Создаю структуру бэкапа: ${DEST_DIR}"
|
||||||
mkdir -p "${DEST_DIR}/home-player" "${DEST_DIR}/etc-system" "${DEST_DIR}/var-lib/docker-images"
|
mkdir -p "${DEST_DIR}/home-player" "${DEST_DIR}/etc-system" "${DEST_DIR}/var-lib/docker-images"
|
||||||
|
|
||||||
@@ -21,17 +47,21 @@ rsync -aH --delete \
|
|||||||
--exclude='**/*.log' \
|
--exclude='**/*.log' \
|
||||||
"${REMOTE_HOST}:/home/player/SHiNE/" "${DEST_DIR}/home-player/SHiNE/"
|
"${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/"
|
copy_optional_dir "/home/player/sites" "${DEST_DIR}/home-player/sites"
|
||||||
rsync -aH --delete "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/home/player/gitea/" "${DEST_DIR}/home-player/gitea/"
|
copy_optional_dir "/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/"
|
copy_optional_dir "/home/player/agent-memory" "${DEST_DIR}/home-player/agent-memory"
|
||||||
|
|
||||||
echo "[3/4] Копирую системные конфиги"
|
echo "[3/4] Копирую системные конфиги"
|
||||||
rsync -aH --delete "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/etc/caddy/" "${DEST_DIR}/etc-system/caddy/"
|
copy_optional_dir "/etc/caddy" "${DEST_DIR}/etc-system/caddy"
|
||||||
rsync -aH --delete "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/var/lib/caddy/" "${DEST_DIR}/var-lib/caddy/"
|
copy_optional_dir "/var/lib/caddy" "${DEST_DIR}/var-lib/caddy"
|
||||||
rsync -aH "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/etc/turnserver.conf" "${DEST_DIR}/etc-system/turnserver.conf"
|
copy_optional_file "/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/"
|
copy_optional_file "/etc/systemd/system/shine-server.service" "${DEST_DIR}/etc-system/shine-server.service"
|
||||||
rsync -aH "${RSYNC_REMOTE_SUDO[@]}" "${REMOTE_HOST}:/etc/systemd/system/agent-memory.service" "${DEST_DIR}/etc-system/"
|
copy_optional_file "/etc/systemd/system/agent-memory.service" "${DEST_DIR}/etc-system/agent-memory.service"
|
||||||
|
if ssh "${REMOTE_HOST}" 'command -v docker >/dev/null 2>&1 && sudo -n docker image inspect gitea/gitea:1.22.6 >/dev/null 2>&1'; then
|
||||||
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"
|
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"
|
||||||
|
else
|
||||||
|
echo "missing: docker image gitea/gitea:1.22.6" > "${DEST_DIR}/var-lib/docker-images/gitea_gitea_1.22.6.tar.MISSING.txt"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "[4/4] Создаю манифест"
|
echo "[4/4] Создаю манифест"
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user