TransferX – Console CLI
Basis Dokumente: Read Me, Architektur
Die TransferX.Console ist die Skript- und Automatisierungsoberfläche für DevOps- und Batch-Szenarien.
Sie unterstützt zwei Modi:
| Modus | Beschreibung |
|---|---|
| Interaktiv | Start ohne Argumente → geführtes Menü |
| CLI | Start mit Argumenten → direkter Command-Aufruf, Exit-Code 0 = OK / 1 = Fehler |
Verwendung
CLI shell
transferx> <command> [Optionen]
transferx> --help
transferx> <command> --help
PowerShell
# Im aktuellen Verzeichnis
.\TransferX.Console.exe --help
.\TransferX.Console.exe provider-list
.\TransferX.Console.exe transfer-run --name MeinTransfer
Command
:: In einer .bat-Datei (cmd.exe)
TransferX.Console.exe --help
TransferX.Console.exe provider-list
Ablauf – Beispiel FTP → Lokal kopieren
flowchart LR
A["1. provider-register\n"FTP-Quelle""] --> B["2. provider-register\n"Lokales Ziel""]
B --> C["3. transfer-start\n--op Copy"]
C --> D["4. transfer-status\n--id <Guid>"]
D --> E["5. transfer-progress\n--id <Guid>"]
Provider-Commands
Verwalten registrierte Provider (FTP, WebDAV, LocalFile usw.).
| Command | Beschreibung |
|---|---|
provider-list |
Alle registrierten Provider auflisten |
provider-register |
Neuen Provider registrieren |
provider-update |
Provider-Konfiguration aktualisieren |
provider-delete |
Provider löschen |
provider-test |
Verbindung zum Provider testen |
provider-details |
Detailansicht eines Providers |
provider-browse |
Verzeichnis eines Providers durchsuchen |
plugin-list |
Verfügbare Provider-Plugins auflisten |
provider-list
transferx provider-list
provider-register
transferx provider-register --name <Name> --type <Typ> --path <Pfad> [--user <User>] [--password <Pw>]
| Option | Pflicht | Beschreibung |
|---|---|---|
--name |
✔ | Anzeigename des Providers |
--type |
✔ | Plugin-Typ: LocalFile, Ftp, WebDav |
--path |
✔ | Basis-Pfad / URL (z. B. ftp://server) |
--user |
– | Benutzername (optional) |
--password |
– | Passwort (optional) |
Beispiel:
transferx provider-register --name MeinFTP --type Ftp --path ftp://meinserver.ch --user admin --password geheim
# → Provider erfolgreich registriert. ID: 3f2504e0-4f89-11d3-9a0c-0305e82c3301
provider-update
transferx provider-update --id <Guid> --path <Pfad> [--user <User>] [--password <Pw>]
provider-delete
transferx provider-delete --id <Guid>
provider-test
transferx provider-test --id <Guid>
provider-details
transferx provider-details --id <Guid>
provider-browse
transferx provider-browse --id <Guid> --path <Pfad>
plugin-list
transferx plugin-list
Transfer-Commands
Steuern laufende und gespeicherte Transfers.
| Command | Beschreibung |
|---|---|
transfer-start |
Neuen Transfer starten |
transfer-list |
Alle Transfers auflisten |
transfer-status |
Status eines Transfers abfragen |
transfer-progress |
Fortschritt eines laufenden Transfers abfragen |
transfer-cancel |
Transfer abbrechen |
transfer-start
transferx transfer-start --src <Guid> --src-path <Pfad> --dst <Guid> --dst-path <Pfad> --op <Operation> [--wait]
| Option | Pflicht | Beschreibung |
|---|---|---|
--src |
✔ | ID des Quell-Providers (Guid) |
--src-path |
✔ | Quellpfad beim Quell-Provider |
--dst |
✔ | ID des Ziel-Providers (Guid) |
--dst-path |
✔ | Zielpfad beim Ziel-Provider |
--op |
✔ | Operation: Copy | Sync | SyncPreview |
--wait |
– | Wartet synchron auf Abschluss (Completed, Failed oder Cancelled). Poll-Intervall: 2000 ms |
Verhalten --wait – Ablauf:
- Ohne
--wait: Transfer startet im Hintergrund (Fire-and-Forget), die Transfer-ID wird sofort ausgegeben. - Mit
--wait: Blockiert die Console bis der TransferCompleted,FailedoderCancelledist. Fortschritt (Dateiname, Prozent) wird laufend ausgegeben.
sequenceDiagram
participant PS as PowerShell
participant CLI as config-start --wait
participant H as StartTransferHandler
participant L as ListTransferConfigsHandler
participant S as GetTransferStatusHandler
PS->>CLI: config-start --id --wait
CLI->>L: HandleAsync(ListTransferConfigsQuery)
L-->>CLI: TransferConfigDto
CLI->>H: HandleAsync(StartTransferCommand)
H-->>CLI: transferId (sofort)
Note over CLI: Poll-Schleife, Intervall 2000 ms
loop bis Completed / Failed / Cancelled
CLI->>S: GetTransferStatusQuery(transferId)
S-->>CLI: TransferStatus
end
CLI-->>PS: Exit-Code 0 / 1
Beispiel:
transferx transfer-start
--src 3f2504e0-4f89-11d3-9a0c-0305e82c3301
--src-path /daten
--dst a1b2c3d4-0000-0000-0000-000000000001
--dst-path /backup `
--op Copy --wait
→ [OK] Transfer erfolgreich gestartet.
→ [i] Transfer-ID: 7c9e6679-7425-40de-944b-e07fc1f90ae7
→ [i] Warte auf Abschluss (--wait) ...
→ ... /daten/datei.txt 42 %
→ [i] Status: Running ...
→ [OK] Transfer abgeschlossen. (2026-03-20 08:15:00)
transfer-list
transferx transfer-list
transfer-status
transferx transfer-status --id <Guid>
transfer-progress
transferx transfer-progress --id <Guid>
transfer-cancel
transferx transfer-cancel --id <Guid>
Transfer-Konfigurations-Commands
Gespeicherte Transfer-Konfigurationen für Wiederverwendung und Automatisierung.
| Command | Beschreibung |
|---|---|
config-save |
Neue Transfer-Konfiguration speichern |
config-rename |
Konfiguration umbenennen |
config-delete |
Konfiguration löschen |
config-list |
Alle Konfigurationen auflisten |
config-start |
Transfer direkt aus Konfiguration starten |
config-save
transferx config-save --name <Name> --src <Guid> --src-path <Pfad> --dst <Guid> --dst-path <Pfad> --op <Operation>
| Option | Pflicht | Beschreibung |
|---|---|---|
--name |
✔ | Anzeigename der Konfiguration |
--src |
✔ | ID des Quell-Providers (Guid) |
--src-path |
✔ | Quellpfad |
--dst |
✔ | ID des Ziel-Providers (Guid) |
--dst-path |
✔ | Zielpfad |
--op |
✔ | Operation: Copy | Sync | SyncPreview |
Beispiel:
transferx config-save --name DailyBackup \
--src 3f2504e0-4f89-11d3-9a0c-0305e82c3301 --src-path /daten \
--dst a1b2c3d4-0000-0000-0000-000000000001 --dst-path /backup \
--op Copy
# → Transfer-Konfiguration erfolgreich gespeichert. ID: b5c6d7e8-...
config-rename
transferx config-rename --id <Guid> --name <NeuerName>
config-delete
transferx config-delete --id <Guid>
config-list
transferx config-list
config-start
transferx config-start --id <Guid> [--wait]
| Option | Pflicht | Beschreibung |
|---|---|---|
--id |
✔ | ID der Transfer-Konfiguration (Guid) |
--wait |
– | Wartet synchron auf Abschluss (Completed, Failed oder Cancelled). Poll-Intervall: 2000 ms |
Beispiel – tägliches Backup per Skript:
transferx config-start --id b5c6d7e8-0000-0000-0000-000000000042 --wait
[i] Starte Transfer 'NachtBackup' (Copy) ...
[i] Quelle: [3f2504e0-...] /export
[i] Ziel: [a1b2c3d4-...] /backup
[OK] Transfer erfolgreich gestartet.
[i] Transfer-ID: b5c6d7e8-0000-0000-0000-000000000042
[i] Warte auf Abschluss (--wait) ...
... /export/datei.txt 75 %
[i] Status: Running ...
[OK] Transfer abgeschlossen. (2026-03-20 02:00:00)
Transfer-Operationen
| Operation | Beschreibung |
|---|---|
Copy |
Kopiert alle Dateien von Quelle nach Ziel (kein Löschen) |
Sync |
Synchronisiert Quelle ↔ Ziel (inkl. Löschen veralteter Dateien) |
SyncPreview |
Vorschau der Sync-Änderungen, ohne Dateien zu verändern |
Vollständiges Beispiel – Backup FTP → Lokal
# 1. FTP-Provider registrieren
transferx provider-register --name FTP-Prod --type Ftp --path ftp://backup.sowi.ch --user ftpuser --password geheim
# 2. Lokales Ziel registrieren
transferx provider-register --name Lokal-Backup --type LocalFile --path C:\Backups
# 3. Alle Provider prüfen
transferx provider-list
# 4. Konfiguration speichern (für wiederkehrende Ausführung)
transferx config-save --name NachtBackup \
--src <FTP-Provider-ID> --src-path /export \
--dst <Lokal-Provider-ID> --dst-path C:\Backups\export \
--op Copy
# 5. Transfer starten und auf Abschluss warten
transferx config-start --id <Konfig-ID> --wait
# 6. Oder: Transfer im Hintergrund starten und Status manuell überwachen
transferx config-start --id <Konfig-ID>
# 7. Status überwachen
transferx transfer-status --id <Transfer-ID>
transferx transfer-progress --id <Transfer-ID>
Prozess-Lifecycle und Stale-Transfer-Bereinigung
Verhalten beim Start
Beim Start prüft die Console automatisch alle gespeicherten Transfers mit Status Running.
Transfers, deren besitzender Prozess (OwnerProcessId) nicht mehr aktiv ist, werden auf Cancelled gesetzt.
Transfers anderer, noch laufender Prozessinstanzen werden nicht verändert – parallele Batch-Ausführungen sind sicher.
Verhalten beim Beenden
Beim Beenden (normal, CTRL+C, IDE-Stop oder Prozess-Kill) werden ausschliesslich die eigenen laufenden Transfers auf Cancelled gesetzt.
| Szenario | Verhalten |
|---|---|
Normales Beenden ([0] im Menü) |
Eigene Running-Transfers → Cancelled |
CTRL+C / CTRL+BREAK |
Eigene Running-Transfers → Cancelled, danach sauberer Exit |
| IDE-Stop / Prozess-Kill | Eigene Running-Transfers → Cancelled via ProcessExit-Handler |
| Parallele Instanz beendet sich | Fremde Running-Transfers bleiben unverändert |
Parallele Ausführung
Mehrere Instanzen der Console können gleichzeitig betrieben werden (z.B. zwei PowerShell-Batches). Jeder Transfer trägt die PID des startenden Prozesses (OwnerProcessId). Cleanup-Operationen wirken immer nur auf eigene oder nachweislich verwaiste Transfers.