Rclone: OneDrive z wiersza poleceń

Jak używać OneDrive w wierszu poleceń? W jaki sposób połączyć się z OneDrive używając PowerShell? Jak pod montować OneDrive jako dysk w Windows? Czy można synchronizować plik z OneDrive używając skryptów?

Istniej wiele sposobów połączenia się z usługą OneDrive z poziomu wiersza polecń/PowerShell np używając modułu. Dzisiaj przedstawie Wam jednak dużo ciekawsze rozwiązanie, aplikacje Rclone

Rclone to program wiersza poleceń do zarządzania plikami w chmurze. Jest to niezwykle bogata w funkcje alternatywa dla interfejsów dostawców usług w chmurze. Tak, dostawców ponieważ obecnie obsługuje ponad 70 rozwiązań od OneDrive, GoogleDrive, Azure, AWS przez OwnCloud, OVH, Mega co czyni go naprawdę uniwersalnym narzędziem.

Rclone ma potężne odpowiedniki w chmurze poleceń uniksowych: rsync, cp, mv, mount, ls, ncdu, tree, rm i cat. Mamy tez dobrzez znane odpowiedniki Windowsowego Robocopy, czy PowerShellowych poleceń. Składnia Rclone obejmuje obsługę potoków powłoki i ochronę przed uruchomieniem tzw –dry-run. Można go używać w wierszu poleceń, skryptach czy poprzez api.

Aplikacja to tak naprawdę jeden plik wykonywalny (możemy go umieścić gdzie chcemy) oraz zapisane ustawienia połączenia z wybranymi rozwiązaniami chmurowymi. W przypadku Windows plik konfiguracyjny domyślnie znajduje się w lokalizacji:

%APPDATA%/rclone/rclone.conf

Połączenia nazywamy, możemy więc mieć ich zdefiniowanych kilka, możemy je również zaszyfrować wtedy w przypadku ich wywołania będziemy musieli podać hasło.

Zacznijmy od początku, pobieramy odpowiednią wersje binarki ze strony i po rozpakowaniu umieszczamy ją w katalogu, w naszym przypadku będzie to:

C:\data\rclone

W naszym przykładzie zdefiniujemy połączenie z usługa OneDrive Bussines z pakietu Microsoft 365.

W tym celu otwieramy Terminal jako administrator i wykonujemy konfiguracje połączenia z naszą usługą.

 .\rclone.exe config

Wybieramy n aby zdefiniować nowe połączenie z usługą, zaczynamy od wprowadzenia jego nazwy:

Następnie wskazujemy usługę jaką chcemy użyć w naszym połączeniu: OneDrive czyli 31

W naszym przykładzie ClientID pozostawimy puste:

OAuth Client Secret również nie będzie przez nas wprowadzane

Wybieramy typ usługi, raczej będzie to dla wszystkich 1

pomijamy też definicje zaawansowanych opcji:

Następnie z użyciem domyślnej przeglądarki dokonamy autentykacji w usłudze OneDrive i pozwolimy aplikacji Rcloud na jej użycie:

otworzy się okno gdzie wprowadzamy swoje poświadczenia (do konta OneDrive):

wracamy do naszego Terminala i zgodnie z uprawnieniami jakie posiada nasze konto Microsoft 365 wybieramy typ usługi, w naszym wypadku 1

Wybieramy konfiguracje która jest dostępna (zazwyczaj jest tylko jedna):

Pozostaje już tylko potwierdzić naszą konfiguracje:

Mamy zdefiniowane połączenie o nazwie sprawdzoneit

W wersji produkcyjnej proponuje ustawić hasło dla konfiguracji, my jednak zakończymy konfiguracje wybierając q

Spróbujmy skopiować dane z dysku lokalnego do naszego OneDrive. W usłudze chmurowej utworzyliśmy oddzielny katalog o nazwie rclone

i chcemy skopiować do niego lokalny plik sample.zip który znajduje się w lokalizacji

c:\data

W tym celu użyjemy polecenia:

.\rclone.exe copy "C:\data\sample.zip" sprawdzoneit:"/rclone"

nie użyliśmy parametru postępu więc po krótkiej chwili oczekiwania (zależnie od rozmiaru pliku):

sprawdźmy więc naszego OneDrive czy plik rzeczywiście się tam znajduje:

Działa! Skoro mamy już proste kopiowanie za sobą czas zając się trochę ciekawszymi parametrami np sync

Sync pozwoli nam na synchronizowanie źródła i celu – np przy skryptach dotyczących kopii zapasowych. Poniżej przykładowy skrypt PowerShell synchronizujący zdefinowae w parametrach katalogi:

#rclone sync example 
#sprawdzone.it

$source = "c:\backup"
$destination = "/rclone/backup"

c:\data\rclone\rclone.exe sync $source sprawdzoneit:$destination

Rozwiązań i parametrów jest sporo – dokumentacja jest dobra więc nie powinniście mieć problemu z użyciem. Pamiętajcie że możecie mieć kilka zdefiniowanych połączeń z różnymi usługami i równie prosto uzyskiwać do nich dostęp.

Rclone pozwala na coś jeszcze – montowanie naszego zdefiniowanego połączenia jako dysku systemowego. Jest to dość ciekawe rozwiązanie w porównaniu z oryginalnym klientem OneDrive ponieważ nie musimy pobierać całego dysku (1TB to nadal dużo) a dostęp do danych mamy praktycznie błyskawiczny.

Aby mapować dysk w chmurze z użyciem Rclone będziemy potrzebowali dwóch dodatkowych aplikacji – nie zrażajcie się są to tak naprawdę tylko dostawcy funkcji.

Przechodzimy na stronę WinFsp i instalujemy kolejno:

sshfs
nfs
winfsp

Po instalacji otwieramy ponownie nasz wiersz poleceń jako ZWYKŁY użytkownik np w Terminalu i wydajemy następujące polecenie:

.\rclone.exe --vfs-cache-mode writes mount sprawdzoneit: *

gdzie sprawdzoneit to nazwa zdefiniowanego przez nas połączenia a * oznacza dowolną wolną literę dysku w naszym systemie:

sprawdzamy czy dysk się pojawił:

Prawda że proste? A to dopiero początek dla naszych skryptów z użyciem OneDrive.


Jeżeli mój wpis Ci się spodobał, pomógł w pracy? Chcesz mnie wspierać? Postaw kawę! To dzięki waszemu wsparciu nie ma reklam! Poniżej kod QR do płatności który jest jednocześnie linkiem do PayPal