diff --git a/scripts/qdrant-sync.sh b/scripts/qdrant-sync.sh index 6d7e4462..99fee160 100755 --- a/scripts/qdrant-sync.sh +++ b/scripts/qdrant-sync.sh @@ -23,7 +23,8 @@ if [[ -z "$TARGET_ENV" ]]; then exit 1 fi -LOCAL_QDRANT_URL=${QDRANT_URL:-"http://localhost:16333"} +LOCAL_QDRANT_URL=${QDRANT_URL:-"http://localhost:6337"} +TIMEOUT=300 # 5 minutes for large snapshots get_target_path() { case "$1" in @@ -52,7 +53,7 @@ echo "🚀 Syncing Qdrant Collection '$COLLECTION' to: $TARGET_ENV" # 1. Create Snapshot Locally echo "📸 1/5 Creating snapshot on local Qdrant ($LOCAL_QDRANT_URL)..." -SNAPSHOT_INFO=$(curl -s -X POST "$LOCAL_QDRANT_URL/collections/$COLLECTION/snapshots") +SNAPSHOT_INFO=$(curl --max-time $TIMEOUT -s -X POST "$LOCAL_QDRANT_URL/collections/$COLLECTION/snapshots") if ! echo "$SNAPSHOT_INFO" | grep -q '"status":"ok"'; then echo "❌ Failed to create snapshot." @@ -65,13 +66,15 @@ echo " ✅ Snapshot created: $SNAPSHOT_NAME" # 2. Download Snapshot echo "⬇️ 2/5 Downloading snapshot..." -curl -s -o "$WORK_DIR/$SNAPSHOT_NAME" "$LOCAL_QDRANT_URL/collections/$COLLECTION/snapshots/$SNAPSHOT_NAME" +curl --max-time $TIMEOUT -s -o "$WORK_DIR/$SNAPSHOT_NAME" "$LOCAL_QDRANT_URL/collections/$COLLECTION/snapshots/$SNAPSHOT_NAME" echo " ✅ Downloaded to $WORK_DIR/$SNAPSHOT_NAME" # 3. Transfer Snapshot echo "📤 3/5 Uploading snapshot to Alpha ($SSH_HOST)..." -ssh "$SSH_HOST" "mkdir -p $TGT_PATH/qdrant_tmp" -scp "$WORK_DIR/$SNAPSHOT_NAME" "$SSH_HOST:$TGT_PATH/qdrant_tmp/$SNAPSHOT_NAME" +SSH_OPTS="-o ServerAliveInterval=60 -o ServerAliveCountMax=10 -o ConnectTimeout=30" +ssh $SSH_OPTS "$SSH_HOST" "mkdir -p $TGT_PATH/qdrant_tmp" +rsync --partial --progress --timeout=600 -e "ssh $SSH_OPTS" \ + "$WORK_DIR/$SNAPSHOT_NAME" "$SSH_HOST:$TGT_PATH/qdrant_tmp/$SNAPSHOT_NAME" echo " ✅ Upload complete." # 4. Restore Snapshot on Remote Server @@ -82,7 +85,7 @@ echo "🔄 4/5 Restoring snapshot on target container ($QDRANT_CONTAINER)..." # - Download snapshot to container # - Recover from snapshot file -ssh "$SSH_HOST" << EOF +ssh $SSH_OPTS "$SSH_HOST" << EOF set -e # Step A: Copy file into the container docker cp "$TGT_PATH/qdrant_tmp/$SNAPSHOT_NAME" $QDRANT_CONTAINER:/qdrant/$SNAPSHOT_NAME