Masz mało miejsca na serwerze? Zamontuj OneDrive w Linux i uzyskaj dodatkowe GB. Poniżej przeczytasz o tym jak zamontować dysk OneDrvie jako folder, tak, aby dane nie były przechowywane fizycznie na naszym serwerze.

OneDrive

W pierwszym kroku potrzebujemy konta OneDrive, jednak jest to rejestracja jak każda inna w przypadku darmowego konta zyskujemy 5GB miejsca na dane. W przypadku płatnych planów Office 365 / Microsoft 365 możemy zyskać od 1TB w wersji Personal, do 6TB w wersji Family (mamy 6 kont po 1TB i każde max na 5 urządzeniach). Oczywiście zyskujemy też pakiet Office czyli Word, Exel, więc myślę, że warto. Jest co prawda ograniczenie do wykorzystywania oprogramowania w celach tylko prywatnych są wersje komercyjne a moje teksty są dla osób początkujących i chcących pogłębiać swoją wiedzę więc zakładam, że nie jest to użytek komercyjny, ale ja tego sprawdzał nie będę :).

Konfiguracja OneDrive w Linux

Wykorzystamy rclone w celu zrobienia tak, aby Linux widział folder, którego zawartość będzie tylko na OneDrive. Dzięki temu będziemy mieli dodatkowe miejsce i będziemy mogli je wykorzystać w dowolny sposób. Mój opis opiera się o Ubuntu (Xubuntu), z którym łącze się przy użyciu komputera z Windows przy pomocy Bitvise SSH.

Zaczynamy od aktualizacji.

sudo apt update
sudo apt upgrade -y

Dalej instalujemy fuse3

sudo apt install fuse3

fuse3 jest wymagany, ponieważ pomaga używać nietypowych źródeł (takich jak OneDrive) jako zwykłych folderów.

W celu zainstalowania aktualnej wersji rclone nie będziemy korzystać z oficjalnego repozytorium naszej dystrybucji Xubuntu (jest tam nieaktualna wersja), tylko zainstalujemy wersję z oficjalnej strony.

curl -O https://rclone.org/install.sh
chmod +x install.sh
sudo ./install.sh

Polecenia odpowiadają kolejno za pobranie skryptu instalacyjnego, nadanie mu uprawnień i wykonanie skryptu. W moim przypadku instalacja trwała blisko 15minut mimo szybkiego łączą, więc warto poczekać 🙂

Czas na konfigurację, jednak zanim zaczniemy musisz wiedzieć, że jeśli tak jak ja używasz trybu tekstowego to konieczne będzie zainstalowanie rclone na Windows/Linux, po prostu na innym komputerze w celu pozyskania kodów autoryzacyjnych. Aby to wykonać wpisujemy:

rclone config

Wybieramy n, następnie nadajemy nazwę, np. onedrive, dalej 42 / Microsoft OneDrive – Tier 1, następnie cztery razy Enter, następnie n.

Dalej pojawia się pytanie czy użyć przeglądarki, ponieważ w moim opisie nie będę używał przeglądarki, robimy wszystko z wiersza poleceń wybieramy n.

Ja dane do logowania pozyskuję w Windows, w tym celu pobieram rclone, następnie rozpakowuje, uruchamiam CMD i wykonuję polecenie.

.\rclone.exe authorize "onedrive"

Efektem jest otwarcie przeglądarki z pytaniem o logowanie i zgodę na dostęp, przechodzimy cały proces. Na koniec powinno się nam w przeglądarce wyświetlić jak poniżej.

W oknie CMD w Windows zobaczymy coś podobnego do poniższego komunikatu tylko dłuższego, kopiujemy z pomięciem górnej i dolnej linijki. Wklejamy w okno z konfiguracją na Linux.

Paste the following into your remote machine --->
{"access_token":"…","token_type":"Bearer",…}
<---End paste

Kolejno wybieramy opcję 1 OneDrive Personal or Business, kolejne pytanie 1 (domyślne), następnie y, ostatnie pytanie o potwierdzenie znów y.

Pozostaje nam wyjść z trybu konfiguracji czyli q.

Jeśli wszystkie polecenia poprzedzało sudo to konfiguracja trafiła dla root’a

mkdir -p ~/.config/rclone
sudo cp /root/.config/rclone/rclone.conf ~/.config/rclone/rclone.conf
sudo chown dominik:dominik ~/.config/rclone/rclone.conf
sudo chmod 600 ~/.config/rclone/rclone.conf

Oczywiście w 3 linii należy dostosować nazwę użytkownika. W celu weryfikacji czy wszystko jest ok, polecam wykonać poniższe polecenie, jeśli będzie ok i wyświetli zawartość to jest ok.

rclone lsd onedrive:

Montowanie OneDrvie w Linux

Stworzymy katalog w folderze użytkownika i tam zamontujemy OneDrive.

mkdir -p ~/onedrive

Następnie pora zamontować katalog

cd ~
rclone mount onedrive: ~/onedrive \
--vfs-cache-mode full \
--vfs-cache-max-size 2G \
-v

Przejdziemy do katalogu i sprawdzimy zawartość

ls ~/onedrivedf -h ~/onedrive

Jak widzisz w moim przypadku OneDrive w Linux pokazuje aż 1TB :).

Skoro działa pora zatrzymać mount przez Ctrl+C.

Wykonujemy polecenie

mount | grep onedrive

jeśli pusto to ok, jeśli nie to trzeba wymusić.

sudo umount -l ~/onedrive

Dodawanie systemd service odpowiedzialnego za montowanie OneDrive w Linux

Najpierw utworzymy plik

sudo nano /etc/systemd/system/rclone-onedrive.service

następnie wklejamy poniższą zawartość, dostosowując o swoje nazwy

[Unit]
Description=RClone OneDrive mount
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/rclone mount onedrive: /home/dominik/onedrive \
  --vfs-cache-mode full \
  --vfs-cache-max-size 5G \
  --vfs-cache-max-age 24h \
  --vfs-read-ahead 128M \
  --buffer-size 32M \
  --dir-cache-time 1h \
  --uid=1000 --gid=1000 \
  --log-file=/home/dominik/rclone-mount.log \
  --log-level INFO
ExecStop=/bin/fusermount -u /home/dominik/onedrive
Restart=on-failure
RestartSec=10
User=dominik
Group=dominik

[Install]
WantedBy=multi-user.target

Zapisujemy Ctrl+O, Enter i zamykamy Ctrl+X

W powyższym pliku w sekcji [Unit] są typowo opisowe kwestie. Blok [Service] odpowiada ze zarządzanie usługą i sekcja [Install] odpowiada za to kiedy ma się uruchomić, w naszym przypadku praktycznie zawsze.

Aktywacja usługi

sudo systemctl daemon-reload
sudo systemctl enable --now rclone-onedrive.servicesudo systemctl start rclone-onedrive.service

W kolejnym kroku sprawdzamy stan

sudo systemctl status rclone-onedrive.service

Usługa powinna być aktywna i dane z OneDrive powinny być już widoczne.