Pourquoi convertir entre formats ?

Les pipelines de déploiement réels croisent inévitablement plusieurs formats : les artifacts CI/CD sortent en ZIP, les serveurs Linux attendent du TAR.GZ, les clients Windows préfèrent le 7z, et Universal Installer travaille en UXC. Convertir manuellement entre ces formats est chronophage et source d'erreurs. Universal Installer V2 automatise ces conversions.

La conversion de format doit préserver trois choses : les données, les permissions Unix (exécutables, liens symboliques) et les métadonnées (horodatage, propriétaire). Un fichier converti sans préserver les permissions chmod 755 devient inutilisable sur Linux.

API de conversion

from universal_installer.convert import ArchiveConverter

converter = ArchiveConverter()

# ZIP → UXC (avec compression IA)
result = converter.convert(
    source="artifact.zip",
    output="artifact.uxc",
    preserve_permissions=True,
    compress_algo="auto"
)
print(f"Ratio : {result.ratio:.2f} ({result.original_mb:.1f} → {result.output_mb:.1f} MB)")

# TAR.GZ → UXC
converter.convert("release.tar.gz", "release.uxc")

# UXC → ZIP (pour compatibilité)
converter.convert("release.uxc", "release.zip")

# Batch conversion d'un dossier entier
converter.batch_convert("artifacts/*.zip", output_format="uxc", output_dir="converted/")

Préservation des permissions Unix

# Les permissions chmod sont stockées dans le manifest UXC
# Format : octal (ex: 755 = rwxr-xr-x)
converter.convert("linux_app.tar.gz", "linux_app.uxc",
    preserve_permissions=True,   # chmod
    preserve_owner=False,        # UID/GID non préservés (cross-system)
    preserve_symlinks=True       # liens symboliques
)

Performances de conversion

ConversionVitesseRatio supplémentaire
ZIP → UXC (code source 500 MB)~45s-12% supplémentaire
TAR.GZ → UXC (binaires 1 GB)~120s-8% supplémentaire
7z → UXC (mixte 2 GB)~180s+2% (7z déjà optimal)
UXC → ZIP (extraction)~30s/GBN/A

Cas limites et solutions

  • Archives protégées par mot de passe — fournir le mot de passe source via vault : converter.convert(..., source_password_vault="ZIP_PASSWORD").
  • Chemins trop longs (Windows > 260 chars) — Universal Installer active automatiquement les chemins longs via Group Policy si disponible.
  • Archives multi-volumes (.zip.001, .zip.002) — assemblage automatique avant conversion.
  • Liens symboliques Windows (junction points) — convertis en liens symboliques UXC avec annotation du type.

Conclusion

La conversion entre formats d'archives avec Universal Installer V2 préserve permissions, métadonnées et liens symboliques. L'API Python est simple et la conversion batch permet de migrer un dossier complet d'artifacts en une commande. Le principal cas d'usage : convertir des artifacts ZIP de CI/CD en UXC optimisé avant déploiement, gagnant 10-15% de taille en moyenne.

📦
PRODUIT LIÉ
Universal Installer V2.0
← Article précédent Article suivant →