spack ist ein kleines Python-Tool zum Packen und Entpacken von Verzeichnissen mit Quellcode in ein einzelnes Archivformat (.spk).
Es unterstützt optionale Verschlüsselung mit Passwort (AES-GCM) sowie eine .spignore-Datei (ähnlich wie .gitignore), um bestimmte Dateien oder Ordner auszuschließen.
- Packt komplette Verzeichnisse in eine einzige Datei (
.spk) - Optionales Passwort → starke Verschlüsselung mit AES-256-GCM
- Kompression mit zlib
- Bewahrt relative Pfadstruktur, Dateigröße, Änderungszeit und Dateirechte
.spignoreunterstützt Globs (*,?,**) sowie Ordnerpräfixe- Plattformübergreifend (Linux, macOS, Windows)
- Python 3.9+ installieren
- Repository oder Datei
spack.pyherunterladen - (Optional für Passwortschutz) benötigtes Paket installieren:
pip install cryptographyDas Tool kennt zwei Hauptbefehle:
python spack.py pack <quellverzeichnis> <ausgabedatei> [--password PASSWORT]Beispiele:
# Packen ohne Passwort
python spack.py pack ./meinprojekt meinprojekt.spk
# Packen mit Passwort
python spack.py pack ./meinprojekt geheim.spk --password "supersecure"python spack.py unpack <archivdatei> <zielverzeichnis> [--password PASSWORT]Beispiele:
# Entpacken ohne Passwort
python spack.py unpack meinprojekt.spk ./entpackt
# Entpacken mit Passwort
python spack.py unpack geheim.spk ./entpackt --password "supersecure"Wenn im Quellverzeichnis eine Datei .spignore liegt, werden die dort definierten Muster nicht ins Archiv aufgenommen.
Die Syntax ist an .gitignore angelehnt.
Beispiele für .spignore:
# Kommentare mit #
*.log
*.tmp
cache/
build/**
secret?.txt
*.logignoriert alle Log-Dateiencache/ignoriert den gesamten Ordnercachebuild/**ignoriert die komplette Build-Hierarchiesecret?.txtignoriert z. B.secret1.txt,secretA.txt
Das .spk-Format ist einfach und eigenständig:
- Enthält ein JSON-Manifest mit allen Dateiinformationen
- Darauf folgen die eigentlichen Dateidaten
- Das Ganze wird mit zlib komprimiert
- Bei Passwort: zusätzlich AES-GCM-verschlüsselt
Frei verwendbar für private und kommerzielle Zwecke. Keine Garantie oder Haftung.