In dieser Anleitung zeige ich euch, wie ihr Inhalte von Microsoft OneDrive mit einem Linux-System synchronisieren könnt.
0. Grundvoraussetzungen
1. Vorbemerkung
Im Moment nutze ich das Tool auf meinem Linux Mint Desktop Rechner, auf dem ich auch produktiv arbeite. Es ist aber selbstverständlich möglich, es auf einer Serverinstallation ohne grafische Oberfläche zu installieren.
In dieser Anleitung stelle ich die Installation über Docker vor. Auf der Seite des Entwicklers befinden sich aber auch Anleitungen, um das Tool aus der Quelle selbst zu kompilieren bzw. gibt es fertig kompilierte Pakete, um es auf den häufigen Linux-Distributionen über den Paketmanager zu installieren.
Ich fand jedoch die systemunabhängige Möglichkeit über Docker sehr attraktiv, weshalb ich diese Variante hier vorstellen möchte.
2. Ordner anlegen
Für die docker-compose.yml:
mkdir -p /opt/containers/onedrive
Weiterhin werden zwei weitere Verzeichnisse benötigt, die ich persönlich im Home-Verzeichnis meines Users angelegt habe:
- Daten-Ordner, in den die Inhalte von OneDrive synchronisiert werden:
mkdir -p /home/<username>/OneDrive
- Konfigurations-Ordner für Konfigurationsdaten:
mkdir -p /home/<username>/.onedrive_config
Hinweis: Ersetze <username> durch den Usernamen, mit dem du arbeitest.
3. Erstmaliger Start mit Anmeldung
3.1 Volle Synchronisation von OneDrive
Beim ersten Start muss man sich zunächst bei Microsoft Onedrive authentifizieren.
Dazu wird der Container folgendermaßen gestartet:
docker run -it --name onedrive -v "/home/<username>/.onedrive_conf:/onedrive/conf" -v "/home/<username>/OneDrive:/onedrive/data" -e "ONEDRIVE_UID=1000" -e "ONEDRIVE_GID=1000" driveone/onedrive:latest
Hinweise:
- Passe auch hier wieder 2x entsprechend den Usernamen an.
- Setze für UID und GID die richtigen Werte ein. Beides findet man heraus, indem man sich mit dem entsprechenden User anmeldet und im Terminalfenster den Befehl id eingibt.
In der anschließenden Ausgabe bekommst du einen Link, den du entweder anklickst (Desktop-Rechner mit grafischer Oberfläche) oder im Browser deiner Wahl in die URL-Zeile kopierst (vgl. Bild).
Im darauffolgenden Fenster meldest du dich mit deinem Microsoft OneDrive-Usernamen und dem passenden Passwort an.
Achtung: Nach erfolgreicher Anmeldung bleibt das Browserfenster weiß. Schließe es nicht, sondern kopiere den Text der Adresszeile (gelbe Markierung im nächsten Bild) in die Zwischenablage, füge ihn anschließend ins Terminalfenster ein und bestätige mit Enter. Damit ist die Authentifizierung abgeschlossen:
Anschließend wird der gesamte Inhalt von OneDrive nun ins angegebene Daten-Verzeichnis synchronisiert.
Entsprechend der Menge der Daten kann das mehrere Stunden dauern.
3.2 Synchronisation ausgewählter Inhalte
Wer nur bestimmte Ordner/Unterordner auf den Linux-Rechner synchronisiert haben möchte, kann den Sync-Vorgang über eine Datei einschränken/steuern:
nano /home/<username>/.onedrive_config/sync_list
Hinweis: Bitte auch hier <username> wieder entsprechend anpassen!
Beispiel-Inhalt:
Ordner1 Ordner2 ...
In diesem Fall ist im Dockerbefehl noch eine weitere Environment-Variable (ONEDRIVE_RESYNC) zu setzen:
docker run -it --name onedrive -v "/home/<username>/.onedrive_conf:/onedrive/conf" -v "/home/<username>/OneDrive:/onedrive/data" -e "ONEDRIVE_UID=1000" -e "ONEDRIVE_GID=1000" -e "ONEDRIVE_RESYNC=1" driveone/onedrive:latest
Hinweis: Bitte auch hier <username> wieder 2x entsprechend anpassen!
Ist der erste Sync-Vorgang abgeschlossen, kann der Container über STRG+C gestoppt werden.
4. Neustart des Containers über Docker Compose
Dazu habe ich den existieren Container gelöscht und die Datei docker-compose.yml angelegt:
docker rm onedrive nano /opt/containers/onedrive/docker-compose.yml
Inhalt der Datei docker-compose.yml:
version: "3" services: onedrive: image: driveone/onedrive:latest container_name: onedrive restart: always environment: - ONEDRIVE_UID=1000 - ONEDRIVE_GID=1000 # - ONEDRIVE_RESYNC=1 volumes: - /home/<username>/.onedrive_conf:/onedrive/conf - /home/<username>/OneDrive:/onedrive/data
Hinweise:
- Sofern die Datei sync_list im Konfigurationsordner nicht verändert wurde, kann die Environment-Variable ONEDRIVE_RESYNC auskommentiert bleiben.
- Sobald du die Datei sync_list veränderst oder verändert hast, nimm den Hash-Tag raus.
- Passe <username> wieder 2x entsprechend an!
- Passe auch die Werte nach UID und GID wieder an!
Starte den Container wie üblich über:
docker compose -f /opt/containers/onedrive/docker-compose.yml up -d