fix: install.sh pipe-mode, add .gitignore, robust error handling, resume state check

This commit is contained in:
2026-05-22 20:08:41 +04:00
parent ddb2ae9501
commit 13a1583df1
17 changed files with 210 additions and 76 deletions
+30 -8
View File
@@ -1,13 +1,21 @@
#!/usr/bin/env bash
# install.sh — Docker Migrate Tool Installer
# Запуск: wget -qO- https://your-gitea/raw/main/install.sh | bash
# curl -fsSL https://your-gitea/raw/main/install.sh | bash
# Запуск: wget -qO- https://giteas.stitch505.su/Stitch505/docker-migrate/raw/main/install.sh | bash
# Потом запускать: docker-migrate
#
# Чтобы сразу запустить после установки (не через pipe):
# curl -fsSL https://.../install.sh -o install.sh && bash install.sh --run
#
set -e
REPO_URL="https://giteas.stitch505.su/Stitch505/docker-migrate"
BRANCH="main"
INSTALL_DIR="/opt/docker-migrate"
RUN_IMMEDIATELY=false
if [ "$1" = "--run" ]; then
RUN_IMMEDIATELY=true
fi
log() { echo "[migrate-install] $*"; }
@@ -43,7 +51,7 @@ fi
# Установка
if [ -d "$INSTALL_DIR" ]; then
log "Директория $INSTALL_DIR уже существует. Удаляем ..."
log "Директория $INSTALL_DIR уже существует. Перезаписываем ..."
rm -rf "$INSTALL_DIR"
fi
mkdir -p "$INSTALL_DIR"
@@ -57,7 +65,6 @@ case "$METHOD" in
log "Скачиваем через curl ..."
tmpzip=$(mktemp /tmp/migrate-XXXXX.zip)
curl -fsSL "${REPO_URL}/archive/refs/heads/${BRANCH}.zip" -o "$tmpzip" || {
# Fallback для gitea raw zip
curl -fsSL "${REPO_URL}/archive/${BRANCH}.zip" -o "$tmpzip"
}
python3 -c "import zipfile; zipfile.ZipFile('$tmpzip').extractall('/tmp')"
@@ -81,6 +88,21 @@ log "Установлено в $INSTALL_DIR"
# Создаём symlink в /usr/local/bin
ln -sf "$INSTALL_DIR/migrate" /usr/local/bin/docker-migrate 2>/dev/null || true
log "Запускаем docker-migrate ..."
cd "$INSTALL_DIR"
exec python3 migrate "$@"
if [ "$RUN_IMMEDIATELY" = true ]; then
log "Запускаем docker-migrate ..."
cd "$INSTALL_DIR"
exec python3 migrate "$@"
else
echo ""
echo "=========================================="
echo "Установка завершена!"
echo ""
echo "Запустите интерактивный режим:"
echo " docker-migrate"
echo ""
echo "Или напрямую:"
echo " docker-migrate --mode=source # подготовка к переносу"
echo " docker-migrate --mode=target # восстановление на новом сервере"
echo " docker-migrate --resume # продолжить после ошибки"
echo "=========================================="
fi