Skip to content

Knyllahsyhn/NChunk

Repository files navigation

NChunk – Nextcloud Chunk Uploader (Async + Rich CLI)

Upload große Dateien bruchsicher nach Nextcloud – ohne Browser-Timeouts.

  • Asynchron (aiohttp + aiofiles) – eine Session, volle Leitung
  • Chunk-Upload (≥ 5 MiB) mit automatischem Zusammenführen (MOVE …/.file)
  • Typer CLI – selbstdokumentierend, Farben via Rich
  • Schicke Fortschrittsbalken (Speed, ETA, mehrere Dateien parallel)
  • Keyring‑Integration & .env‑Fallback, Login‑Check beim Speichern
  • Profile für mehrere Clouds / Accounts
  • Python ≥ 3.11 • GPLV3

PyPI CI Publish to PyPI & GitHub Release

Inhaltsverzeichnis

  1. Installation
  2. Erster Login
  3. Dateien hochladen
  4. Optionen & Beispiele
  5. Profile – mehrere Accounts
  6. Entwicklung & Tests
  7. Roadmap
  8. Lizenz

Installation

# empfohlenes src‑Layout → editable install
python -m venv .venv
source .venv/bin/activate           # Windows: .venv\Scripts\Activate.ps1
pip install -e .[dev]               # inkl. pytest & ruff

Oder später direkt aus PyPI:

pip install nchunk

Erster Login

# prüft URL + Zugangsdaten sofort per PROPFIND
nchunk login https://cloud.example.com alice
# Passwort‑Eingabe wird verdeckt
  • Erfolgreich → Daten landen verschlüsselt im OS‑Keyring (nchunk_nextcloud).
  • Fehlgeschlagen → klare Meldung, keine Speicherung.

Dateien hochladen

# Ein File
nchunk upload movie.iso                 \
       --url https://cloud.example.com  \
       --user alice

# Mehrere parallel
nchunk upload *.zip docs/**/*.pdf       \
       --url cloud.example.com          \
       --user alice                     \
       --chunk-size 10485760            \
       --remote-dir Backups/$(date +%Y-%m-%d)

--url kann mit oder ohne https:// angegeben werden; das Tool hängt bei Bedarf /remote.php/dav automatisch an.


Optionen & Beispiele

Flag Default Erklärung
--chunk-size 10485760 Bytes pro Chunk (≥ 5 MiB)
--remote-dir "" Zielordner in Nextcloud (wird angelegt)
--insecure False TLS‑Prüfung abschalten (Self‑Signed Certs)
--concurrency 4 Max. parallele Datei‑Uploads
--profile default Trennt mehrere Accounts (siehe unten)
--resume* geplant – Upload fortsetzen
--dry-run* geplant – nur Requests anzeigen

Profile – mehrere Accounts

# Work‑Cloud
nchunk login https://cloud.work.com alice --profile work

# Private Cloud
nchunk login cloud.home.net bob --profile home

# Upload mit explizitem Profil
nchunk upload video.mp4 --profile work

Keyring‑Keys → <url>::<user>::<profile>.


Entwicklung & Tests

ruff check src tests   # Linting
pytest                 # Unit‑ & Async‑Tests

Der src‑Layer stellt sicher, dass Tests nur nach pip install -e . funktionieren – Import‑Fehler fallen sofort auf.


Roadmap

  • Resume abgebrochener Uploads (--resume)
  • Sync‑Ordner (watch & upload)
  • Progress‑Export als JSON / Quiet‑Mode
  • ✅ PyPI‑Release mit Signed Wheel
  • Windows‑Installer (pex / shiv)

PRs & Issues willkommen 🙂


Lizenz

GPLV3, siehe LICENSE

About

A simple python script to allow chunked uploads to a Nextcloud instance

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages