# suzhu kgrag migration steps This flow is the safer staged migration path: 1. export data inside the source `kgrag` container 2. `docker cp` the archive to the source host 3. `scp` the archive to `192.168.1.108` 4. extract it under `/home/workspace/kgrag` 5. import Neo4j snapshot, rebuild indexes, update URLs, verify It avoids directly running cross-host rsync against the live target directory. ## Hosts Source host: ```text 192.168.0.164 root Echo@456 ``` Target host: ```text 192.168.1.108 root zdht123@ ``` Target migration directory: ```text /home/workspace/suzhu-kgrag_migration ``` Target kgrag app directory: ```text /home/workspace/kgrag ``` Inside the target `kgrag` container, the mounted script directory is: ```text /app/suzhu-kgrag_migration ``` ## 1. Copy export script from target to source Run on `192.168.1.108`: ```bash scp /home/workspace/suzhu-kgrag_migration/00_export_from_source_container.sh \ root@192.168.0.164:/home/workspace/ ``` ## 2. Export data on source host Run on `192.168.0.164`: ```bash bash /home/workspace/00_export_from_source_container.sh ``` By default it exports from: ```text container: kgrag container dir: /app ``` It packages these items if they exist: ```text files kg_output kg_snapshot.json fault_wenjian entity_registry.json tree_data.json ``` The archive will be created on the source host under: ```text /home/workspace/kgrag_export/kgrag_data_YYYYmmddHHMMSS.tar.gz ``` If the source container name is not `kgrag`, run: ```bash KGRAG_CONTAINER=your_container_name bash /home/workspace/00_export_from_source_container.sh ``` ## 3. Copy archive back to target Run on `192.168.1.108`: ```bash mkdir -p /home/workspace/kgrag_import scp root@192.168.0.164:/home/workspace/kgrag_export/kgrag_data_*.tar.gz \ /home/workspace/kgrag_import/ ``` Check the archive: ```bash ls -lh /home/workspace/kgrag_import/kgrag_data_*.tar.gz tar -tzf /home/workspace/kgrag_import/kgrag_data_*.tar.gz | sed -n '1,40p' ``` ## 4. Extract archive into target kgrag directory Run on `192.168.1.108`: ```bash cd /home/workspace/kgrag tar -xzf /home/workspace/kgrag_import/kgrag_data_*.tar.gz ``` Check expected files: ```bash ls -ld /home/workspace/kgrag/files \ /home/workspace/kgrag/kg_output \ /home/workspace/kgrag/fault_wenjian 2>/dev/null || true ls -lh /home/workspace/kgrag/kg_snapshot.json \ /home/workspace/kgrag/entity_registry.json \ /home/workspace/kgrag/tree_data.json 2>/dev/null || true ``` ## 5. Import Neo4j snapshot Run on `192.168.1.108`: ```bash cd /home/workspace/suzhu-kgrag_migration bash 02_load_neo4j.sh ``` This reads: ```text /home/workspace/kgrag/kg_snapshot.json ``` and imports it inside the target `kgrag` container through: ```text /app/kg_snapshot.json ``` ## 6. Rebuild Neo4j indexes Run on `192.168.1.108`: ```bash cd /home/workspace/suzhu-kgrag_migration bash 02b_rebuild_index.sh ``` ## 7. Update old source URLs in Neo4j Run on `192.168.1.108`: ```bash cd /home/workspace/suzhu-kgrag_migration bash 03_run_in_container.sh ``` This executes inside the target container: ```text /app/suzhu-kgrag_migration/03_update_neo4j_urls.py ``` It replaces URLs like: ```text http://192.168.0.164:9085 ``` with: ```text http://192.168.1.108:9085 ``` ## 8. Verify migration Run on `192.168.1.108`: ```bash cd /home/workspace/suzhu-kgrag_migration bash 05_run_in_container.sh ``` This executes inside the target container: ```text /app/suzhu-kgrag_migration/05_verify_migration.py ``` ## Full command sequence ```bash # On 192.168.1.108 scp /home/workspace/suzhu-kgrag_migration/00_export_from_source_container.sh root@192.168.0.164:/home/workspace/ # On 192.168.0.164 bash /home/workspace/00_export_from_source_container.sh # On 192.168.1.108 mkdir -p /home/workspace/kgrag_import scp root@192.168.0.164:/home/workspace/kgrag_export/kgrag_data_*.tar.gz /home/workspace/kgrag_import/ cd /home/workspace/kgrag tar -xzf /home/workspace/kgrag_import/kgrag_data_*.tar.gz cd /home/workspace/suzhu-kgrag_migration bash 02_load_neo4j.sh bash 02b_rebuild_index.sh bash 03_run_in_container.sh bash 05_run_in_container.sh ``` ## Notes - Do not run `01_copy_files.sh` for this staged flow. That script directly pulls files with `rsync` from the source host. - `02_load_neo4j.sh`, `02b_rebuild_index.sh`, and `03_run_in_container.sh` modify the target Neo4j data/indexes. - Keep the archive under `/home/workspace/kgrag_import` until verification passes.