deploy_aitvaras.sh: rsync transferiert alle Dateien bei jedem Deployment #82

Closed
opened 2025-06-24 11:07:33 +02:00 by Michael · 1 comment
Michael commented 2025-06-24 11:07:33 +02:00 (Migrated from gitea.dragons-at-work.de)

Problem

Das deploy_aitvaras.sh Script löscht das Zielverzeichnis vor dem rsync und erstellt es neu, wodurch rsync bei jedem Deployment alle Dateien übertragen muss, anstatt nur die geänderten.

Aktueller (ineffizienter) Code

# Clean up target directory and recreate with correct permissions  
aitvaras_exec_sudo "rm -rf $TARGET_DIR"
aitvaras_exec_sudo "mkdir -p $TARGET_DIR"
aitvaras_exec_sudo "chown michael:michael $TARGET_DIR"

# Sync files as michael user (now has permissions)
rsync -avz "${excludes[@]}" \
    -e "ssh" \
    "$SOURCE_DIR/" "$AITVARAS_HOST:$TARGET_DIR/"

Resultat: Bei jedem Deployment werden ~13KB übertragen (alle Dateien), obwohl nur wenige Dateien geändert wurden.

Vorgeschlagene Lösung

Statt Verzeichnis zu löschen, temporär Berechtigungen ändern:

# Existing directory - change ownership temporarily for incremental sync
if aitvaras_exec "test -d $TARGET_DIR"; then
    aitvaras_exec_sudo "chown -R michael:michael $TARGET_DIR"
else
    aitvaras_exec_sudo "mkdir -p $TARGET_DIR"
    aitvaras_exec_sudo "chown michael:michael $TARGET_DIR"
fi

# Incremental sync (only changed files)
rsync -avz --delete "${excludes[@]}" \
    -e "ssh" \
    "$SOURCE_DIR/" "$AITVARAS_HOST:$TARGET_DIR/"

# Restore service ownership
aitvaras_exec_sudo "chown -R $SERVICE_USER:$SERVICE_GROUP $TARGET_DIR"

Erwartete Verbesserung

  • Erste Deployment: Alle Dateien (13KB) - wie bisher
  • Weitere Deployments: Nur geänderte Dateien (evtl. 1-2KB)
  • Performance: 80-90% weniger Datenübertragung
  • Geschwindigkeit: Deutlich schnellere Deployments

Files Involved

  • scripts/deploy/deploy_aitvaras.sh - sync_files() function

Priority

Medium - Funktionalität ist korrekt, aber Effizienz-Verbesserung für häufige Deployments.

## Problem Das deploy_aitvaras.sh Script löscht das Zielverzeichnis vor dem rsync und erstellt es neu, wodurch rsync bei jedem Deployment **alle Dateien** übertragen muss, anstatt nur die geänderten. ## Aktueller (ineffizienter) Code ```bash # Clean up target directory and recreate with correct permissions aitvaras_exec_sudo "rm -rf $TARGET_DIR" aitvaras_exec_sudo "mkdir -p $TARGET_DIR" aitvaras_exec_sudo "chown michael:michael $TARGET_DIR" # Sync files as michael user (now has permissions) rsync -avz "${excludes[@]}" \ -e "ssh" \ "$SOURCE_DIR/" "$AITVARAS_HOST:$TARGET_DIR/" ``` **Resultat:** Bei jedem Deployment werden ~13KB übertragen (alle Dateien), obwohl nur wenige Dateien geändert wurden. ## Vorgeschlagene Lösung Statt Verzeichnis zu löschen, **temporär Berechtigungen ändern**: ```bash # Existing directory - change ownership temporarily for incremental sync if aitvaras_exec "test -d $TARGET_DIR"; then aitvaras_exec_sudo "chown -R michael:michael $TARGET_DIR" else aitvaras_exec_sudo "mkdir -p $TARGET_DIR" aitvaras_exec_sudo "chown michael:michael $TARGET_DIR" fi # Incremental sync (only changed files) rsync -avz --delete "${excludes[@]}" \ -e "ssh" \ "$SOURCE_DIR/" "$AITVARAS_HOST:$TARGET_DIR/" # Restore service ownership aitvaras_exec_sudo "chown -R $SERVICE_USER:$SERVICE_GROUP $TARGET_DIR" ``` ## Erwartete Verbesserung - **Erste Deployment:** Alle Dateien (13KB) - wie bisher - **Weitere Deployments:** Nur geänderte Dateien (evtl. 1-2KB) - **Performance:** 80-90% weniger Datenübertragung - **Geschwindigkeit:** Deutlich schnellere Deployments ## Files Involved - `scripts/deploy/deploy_aitvaras.sh` - `sync_files()` function ## Priority **Medium** - Funktionalität ist korrekt, aber Effizienz-Verbesserung für häufige Deployments.
michael added this to the v0.1.2 - Gateway Basics milestone 2025-08-14 05:20:48 +02:00
Owner

deployment wird anders gelöst. Das issue ist überflüssig.

deployment wird anders gelöst. Das issue ist überflüssig.
Sign in to join this conversation.
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: DAW/furt#82
No description provided.