61 lines
3.3 KiB
Markdown
61 lines
3.3 KiB
Markdown
# SharePoint Folder Download Tool
|
|
|
|
Dette script gør det muligt at downloade specifikke mapper fra et SharePoint dokumentbibliotek til din lokale computer ved hjælp af Microsoft Graph API. Scriptet er designet til professionelt brug med fokus på hastighed, stabilitet og dataintegritet.
|
|
|
|
## Funktioner
|
|
|
|
* **Paralleldownload:** Benytter `ThreadPoolExecutor` (default 5 tråde) for markant højere overførselshastighed.
|
|
* **Resume Download:** Understøtter HTTP `Range` headers, så afbrudte downloads af store filer (f.eks. >50GB) genoptages fra det sidste byte i stedet for at starte forfra.
|
|
* **Exponential Backoff:** Håndterer automatisk Microsoft Graph throttling (`429 Too Many Requests`) og netværksfejl med intelligente genforsøg.
|
|
* **Struktureret Logging:** Gemmer detaljerede logs i `sharepoint_download.log` samt en CSV-fejlrapport for hver kørsel.
|
|
* **Paginering:** Håndterer automatisk mapper med mere end 200 elementer via `@odata.nextLink`.
|
|
* **Smart Skip & Integritet:** Skipper filer der allerede findes lokalt med korrekt størrelse, og forbereder til hash-validering (QuickXorHash).
|
|
* **Entra ID Integration:** Benytter MSAL for sikker godkendelse via Client Credentials flow med automatisk token-refresh.
|
|
|
|
## Installation
|
|
|
|
1. Sørg for at have Python 3 installeret.
|
|
2. Installer de nødvendige biblioteker:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Opsætning i Microsoft Entra ID (Azure AD)
|
|
|
|
For at scriptet kan få adgang til SharePoint, skal du oprette en App-registrering:
|
|
|
|
1. Log ind på [Microsoft Entra admin center](https://entra.microsoft.com/).
|
|
2. Gå til **Identity** > **Applications** > **App registrations** > **New registration**.
|
|
3. Giv appen et navn (f.eks. "SharePoint Download Tool") og vælg "Accounts in this organizational directory only". Klik på **Register**.
|
|
4. Noter din **Application (client) ID** og **Directory (tenant) ID**.
|
|
5. Gå til **API permissions** > **Add a permission** > **Microsoft Graph**.
|
|
6. Vælg **Application permissions**.
|
|
7. Søg efter og tilføj `Sites.Read.All` (eller `Sites.ReadWrite.All` hvis du har brug for skriveadgang).
|
|
8. **VIGTIGT:** Klik på **Grant admin consent for [dit domæne]** for at godkende rettighederne.
|
|
9. Gå til **Certificates & secrets** > **New client secret**. Tilføj en beskrivelse og vælg udløbsdato.
|
|
10. **VIGTIGT:** Kopier værdien under **Value** med det samme (det er din `CLIENT_SECRET`). Du kan ikke se den igen senere.
|
|
|
|
## Konfiguration
|
|
|
|
1. Kopier `connection_info.template.txt` til en ny fil kaldet `connection_info.txt`.
|
|
2. Indstil dine forbindelsesoplysninger i `connection_info.txt`:
|
|
* `TENANT_ID`, `CLIENT_ID`, `CLIENT_SECRET` (Fra Microsoft Entra admin center).
|
|
* `SITE_URL`: URL til din SharePoint site.
|
|
* `DOCUMENT_LIBRARY`: Navnet på dokumentbiblioteket (f.eks. "22 Studies").
|
|
* `FOLDERS_TO_DOWNLOAD`: Liste over mapper adskilt af komma. Hvis denne efterlades tom, downloades hele biblioteket.
|
|
* `LOCAL_PATH`: Hvor filerne skal gemmes lokalt.
|
|
|
|
## Anvendelse
|
|
|
|
Kør scriptet med:
|
|
```bash
|
|
python download_sharepoint.py
|
|
```
|
|
|
|
### Logfiler
|
|
* `sharepoint_download.log`: Teknisk log over alle handlinger og fejl.
|
|
* `download_report_YYYYMMDD_HHMMSS.csv`: En hurtig oversigt over filer der fejlede.
|
|
|
|
## Sikkerhed
|
|
Husk at `.gitignore` er sat op til at ignorere `connection_info.txt`, så dine adgangskoder ikke uploades til Git.
|