Jak zsynchronizować OneDrive Business / Office 365 w systemie Linux?


24

Microsoft OneDrive Business / Office 365 Pro oferuje 1 TB przestrzeni dyskowej w chmurze, ale niestety nigdy nie było metody jej synchronizacji w systemie Linux.


2
Witamy w Ask Ubuntu ! Jesteśmy witryną pytań i odpowiedzi, a nie forum. Obecnie masz zarówno pytanie, jak i odpowiedź w wyznaczonej części pytania. Proszę edytować swój post do usunięcia odpowiedź i stanowisko, że w sekcji odpowiedzi poniżej (powinien istnieć przycisk u dołu strony). Dzięki!
Seth

Odpowiedzi:


7

Obecnie eksperymentalny onedrive-d jest programem typu open source, który może synchronizować tylko osobiste konta OneDrive, ponieważ nie akceptuje linków Microsoft Sharepoint. Oto metoda synchronizacji OneDrive Business / Office 365 przy użyciu GoodSync dla systemu Linux , który jest bezpłatny do użytku osobistego.

  1. Zainstaluj odpowiednią wersję na komputerze z systemem Linux, np .:

    ./goodsync-linux-x86_64-release.run
    

    Odpowiedz przez nr dla konfiguracji GoodSync Connect i interfejsu internetowego GsServer.

  2. Otwórz OneDrive w przeglądarce internetowej. wybierz „Return to Classic OneDrive” w prawym dolnym rogu.
  3. Adres internetowy w przeglądarce będzie teraz wyglądał: https://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents/Forms/All.aspxi na jego podstawie uzyskaj link do synchronizacji, który będzie office365://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents.
  4. Utwórz nowy plik w podfolderze .goodsync w domu:

    gedit ~/.goodsync/jobs.tix
    
  5. Wpisz następujący kod w pliku i zapisz go:

    <Job>
    Name = "OneDrive_Sync"
    Side1 = <SideOptions>
    Dir = <Connect>
        Url = "put_your_syncing_link_here"
        UserID = "put_your_OneDrive/Office365_Bussiness_email_here"
    </Connect>
    </SideOptions>
    Side2 = <SideOptions>
    Dir = <Connect>
        Url = "file:///your_home_folder/one_drive_folder"
    </Connect>
    </SideOptions>
    Direction = 0
    ExcludeHidden = No
    ExcludeSystem = No
    DetectMovesAndRenames = Yes
    LinksOption = 1
    ExcludeEmptyFolders = No
    LimitChangesPercent = 100
    AutoResolveConflicts = 3
    DetectMovesAndRenames = Yes
    </Job>
    
  6. Rozpocznij proces synchronizacji:

    gsync sync "OneDrive_Sync"
    
  7. Na tym etapie Twoja przeglądarka internetowa otworzy stronę OneDrive / Office 365 i poprosi o Twoją autoryzację, aby zezwolić towarowi na dostęp do twojego konta. Po wprowadzeniu danych logowania rozpocznie się synchronizacja.

Ograniczenia: Microsoft nie zezwala na Żądania URL o długości większej niż 270 znaków, dlatego GoodSync NIE MOŻE synchronizować plików o długich ścieżkach.

Cieszyć się!


3
Moja przeglądarka internetowa nie otwiera strony autoryzacji w kroku 7. Masz pomysł, jak to zrobić ręcznie?
pat-s

3
Moja przeglądarka internetowa również nie jest otwarta do logowania
Haha TTpro

2
System plików w office365: Dokumenty /.../ zostały zastąpione nowym interfejsem API OneDrive V2. Kliknij przycisk Przeglądaj, aby ponownie przejść do folderu synchronizacji OneDrive, ponieważ nowy OneDrive wymaga uwierzytelnienia opartego na przeglądarce (OAuth2)
Ferroao

6

Ubuntu 18.04 i nowsze wersje

Klient OneDrive znajduje się w domyślnych repozytoriach Ubuntu w Ubuntu 18.04 i nowszych. OneDrive to system pamięci masowej w chmurze firmy Microsoft. Ten pakiet udostępnia klienta wiersza polecenia specjalizującego się w synchronizacji z pamięcią masową w chmurze OneDrive.

Zainstaluj z:

sudo apt install onedrive

Przy pierwszym uruchomieniu prosi o uwierzytelnienie za pomocą linku. Po uwierzytelnieniu możesz włączyć diamon za pomocą, systemctl --user enable onedrivea następnie systemctl --user start onedrive. Dalsze wyjaśnienia można znaleźć na stronie podręcznika man onedrive. Jest bardzo łatwy w konfiguracji i zajmuje tylko około pięciu minut.


4
To nie działa w OneDrive dla Firm
tricasse

1
@tricasse Działa dla Office 365 Pro
Mattia_98,

2

Podczas gdy oryginalne i często używane onedrivednarzędzie przez xybu nadal nie obsługuje OneDrive dla Firm, ale tylko osobiste OneDrive. istnieje jednak rozwidlenie tego projektu na GitHub autorstwa derrix060, które ma w jakiś sposób działającą (ale wciąż błędną) implementację dla klienta biznesowego.

Ostrzeżenie: podczas korzystania z tej metody zdecydowanie zalecamy, aby zawsze sprawdzić, czy pliki zostały poprawnie zsynchronizowane, sprawdzając je online na stronie https://www.office.com i / lub użyć mojego skryptu opakowania pokazanego na końcu tej strony aby przynajmniej otrzymywać informacje o błędach za pomocą powiadomień na pulpicie!

Czasami zdaje się, że onedrived nie odbiera niektórych zmian lub nie przesyła ich poprawnie, pozostawiając OneDrive w (częściowo) niezsynchronizowanym stanie. Może się również zdarzyć, że z jakiegoś powodu generuje on konflikty scalania i zmienia nazwy plików lokalnie, dodając nazwę hosta w nawiasach i opcjonalnie liczbę. Niestety nie ma powiadomienia o błędach, ale możesz zobaczyć wpisy w swoim pliku dziennika.

Jeśli tak się stanie, możesz spróbować ponownie zsynchronizować odpowiednie pliki, np. Dotykając ich lub zmieniając ich nazwę lub folder, w którym się znajdują.

Wskazówka: Wygląda na to, że biblioteka onedrived często ma problemy, szczególnie z plikami zapisanymi bezpośrednio w katalogu głównym OneDrive. Prawdopodobnie lepiej jest umieścić wszystkie pliki w podkatalogach zamiast zrzucić je bezpośrednio do folderu OneDrive.

Chociaż brzmi to głupio, zauważyłem również, że wydaje się, że powoduje mniej problemów z przesyłaniem plików za pośrednictwem klienta sieci Web OneDrive i poczekaj, aż zsynchronizują się z powrotem z folderem lokalnym (choć może to potrwać kilka minut) niż ich utworzenie, skopiowanie / przeniesienie lokalnie. Bez względu na to, czy jest to praktyczne, czy całkowicie nieważne, OneDrive należy do Ciebie ...

Zobacz plik readme projektu, aby uzyskać pełne instrukcje instalacji, ale oto krótkie podsumowanie:

Instalacja

  1. Upewnij się, że nie masz zainstalowanej innej wersji onedrived(lub onedrive-d).

  2. Zainstaluj pakiety zależności:

    sudo apt install build-essential python3-dev libssl-dev inotify-tools python3-dbus libdbus-1-dev libdbus-glib-1-dev
    
  3. Pobierz najnowszego ngrokklienta dla systemu Linux z oficjalnej strony internetowej pod adresem https://ngrok.com/download . ngrok-clientPakiet z repozytoriów Ubuntu jest zbyt stary i nie spełnia wymogów.
    Rozpakuj pobrane ngrok-stable-linux-amd64.ziparchiwum. Zawiera pojedynczy ngrokplik binarny, który powinieneś umieścić w swoim miejscu $PATH, np /usr/local/bin/. W.
    Rejestracja w ngrok prawdopodobnie nie jest konieczna.

  4. Zainstaluj onedrivedaplikację Python3 z GitHub, używając pip3:

    sudo -H pip3 install git+https://github.com/derrix060/onedriveClient.git
    
  5. Opcjonalnie skonfiguruj lokalizację pliku dziennika dla onedrived, w której możesz sprawdzić problemy, jeśli coś nie działa poprawnie, np .:

    onedrived-pref config set logfile_path ~/.config/onedrived/onedrived.log
    

Konfiguracja konta i konfiguracja dysku

Po pomyślnej instalacji musisz skonfigurować swoje konto i dyski:

  1. Dodaj swoje konto OneDrive dla Firm w trybie interaktywnym, uruchamiając:

    onedrived-pref account add -b
    

    Interaktywny kreator poprosi Cię dwukrotnie o otwarcie łącza w przeglądarce, w którym będziesz musiał autoryzować aplikację za pomocą konta Microsoft Business.
    Poprosi Cię o wklejenie adresu URL, na który zostaniesz przekierowany po potwierdzeniu autoryzacji z powrotem do interaktywnego kreatora. Postępuj zgodnie z instrukcjami i postępuj zgodnie z instrukcjami podanymi przez polecenie.

  2. Sprawdź, czy konto zostało pomyślnie dodane, sprawdzając dane wyjściowe polecenia poniżej. Powinien wyglądać podobnie i wyświetlać konto, na którym jesteś zalogowany:

    $ onedrived-pref account list
    
    All OneDrive accounts associated with user "YOUR_UBUNTU_USERNAME":
    
      #  Account ID                 Owner Name     Email Address         Profile Type
    ---  -------------------------  -------------  --------------------  --------------
      0  YOUR_PERSONAL_ACCOUNT_ID   YOUR_NAME      YOUR_BUSINESS_EMAIL   Business
    
  3. Skonfiguruj dyski w interaktywnym trybie poleceń, uruchamiając:

    onedrived-pref drive set
    

    Zobaczysz listę wszystkich dysków i zostaniesz poproszony o podanie numeru wiersza dysku, który chcesz dodać do konfiguracji lokalnej.
    Następnie musisz określić katalog lokalny, którego chcesz użyć jako folderu głównego do synchronizacji z dyskiem. Możesz po prostu nacisnąć, Entera użyje domyślnego ~/OneDrive. Jeśli ścieżka nie istnieje, zostanie utworzona. To samo dotyczy ścieżki do pliku zignorowania, którego chcesz użyć, możesz po prostu nacisnąć, Entera on użyje domyślnego ~/.config/onedrived/ignore_v2.txti utworzy go, jeśli to konieczne.

  4. Sprawdź dane wyjściowe poniższego polecenia, aby wyświetlić informacje o wszystkich dostępnych i skonfigurowanych napędach. Powinien on pokazywać właśnie skonfigurowany dysk z poprawnymi ustawieniami pod nagłówkiem Drives that have been set up:

    onedrived-pref drive list
    

Uruchamianie demona

Po skonfigurowaniu dysku musisz spróbować uruchomić onedriveddemona. Polecam najpierw uruchomić go w trybie debugowania, na wypadek problemów, których w przeciwnym razie byś nie zauważył. Rozpocznie się onedrivedna pierwszym planie:

onedrived start --debug

Jeśli wszystko jest w porządku, a polecenie nie ulega awarii i nie kończy działania, spróbuj umieścić niektóre pliki w lokalnym folderze OneDrive i sprawdź, czy się synchronizuje. Prawdopodobnie powinieneś być w stanie to sprawdzić, odwiedzając aplikację internetową OneDrive pod adresem https://www.office.com i sprawdzając, czy pliki dodane lokalnie się tam pojawiają.

Możesz ponownie zakończyć onedrivedproces w swoim terminalu, naciskając Ctrl+ C.

Aby uruchomić onedrivednormalnie, jako demon w tle, uruchom go z:

onedrived start

Prawdopodobnie powinieneś dodać to polecenie do swoich aplikacji startowych, aby uruchamiało się ono automatycznie przy każdym logowaniu. Zapoznaj się z tematem Jak automatycznie uruchamiać aplikacje podczas logowania? za to.

Opakowanie do powiadomień o błędach

Jeśli chcesz otrzymywać powiadomienia na pulpicie za każdym razem, gdy onedrivedloguje się błąd (np. Nieudana synchronizacja pliku), oto skrypt otoki, który analizuje plik dziennika w czasie rzeczywistym i używa polecenia send-send, aby wyświetlić je tobie.

Możesz uruchomić skrypt opakowania bez argumentów (lub umieścić go w aplikacjach automatycznego uruchamiania) zamiast onedrived startpolecenia.

#!/bin/bash
LOGFILE=~/.config/onedrived/onedrived.log
ICON_START=weather-overcast
ICON_STOP=weather-few-clouds
ICON_ERROR=weather-severe-alert

onexit () {
    onedrived stop
    notify-send -i "$ICON_STOP" "OneDrive" "Wrapper stopped"
    echo "onedrived-wrapper stopped"
}

trap onexit EXIT

onedrived stop
echo "---" >> "$LOGFILE"

onedrived start || {
    echo "Failed to start onedrived!"
    exit 1
}
notify-send -i "$ICON_START" "OneDrive" "Wrapper started"

echo "Monitoring onedrived.log for error messages..."
tail -n 1 -F --pid="$(pgrep -f "onedrived start")" "$LOGFILE" |
    while read LINE ; do
        echo "$LINE"
        if MESSAGE="$(grep -Pio '(?<=ERROR: ).*' <<< "$LINE")" ; then
            notify-send -i "$ICON_ERROR" "OneDrive Error" "$MESSAGE"
        fi
    done

Nadal pojawia się komunikat „Autoryzacja onedrived: interakcja nie jest wymagana”. po wprowadzeniu drugiego linku do uwierzytelnienia konta ODfB. Wszelkie pomysły, dlaczego tak się może stać?
Jimakos

@Jimakos Przepraszamy, nigdy nie spotkałem tej wiadomości. Niestety nie mam pojęcia.
Bajt Dowódca

1

rclone obsługuje OneDrive dla Firm. Zobacz artykuł Jak zamontować OneDrive w systemie Linux za pomocą Rclone (obsługuje konta firmowe i osobiste) - Blog Powstania Linuksa do użytku.

Oto mój przykład instalacji nowego pilota onedrive1z rclone 1.48.0 (na Fedorze 30):

$ rclone config
2019/10/10 06:35:56 NOTICE: Config file ".config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> onedrive1
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
⋮
19 / Microsoft OneDrive
   \ "onedrive"
⋮
Storage> 19      
** See help for onedrive backend at: https://rclone.org/onedrive/ **

Microsoft App Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id> 
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret> 
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n

Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Choose a number from below, or type in an existing value
 1 / OneDrive Personal or Business
   \ "onedrive"
 2 / Root Sharepoint site
   \ "sharepoint"
 3 / Type in driveID
   \ "driveid"
 4 / Type in SiteID
   \ "siteid"
 5 / Search a Sharepoint site
   \ "search"
Your choice> 1
Found 2 drives, please select the one you want to use:
0: OneDrive - Example Inc (business) id=b!gFLg-RRe****-T9B****
1: OneDrive - Example Inc (business) id=b!gFLg-RRe****-T-H****
Chose drive to use:> 1
Found drive 'root' of type 'business', URL: https://example-my.sharepoint.com/personal/myname_example_com/Documents
Is that okay?
y) Yes
n) No
y/n> y
Current remotes:

Name                 Type
====                 ====
onedrive1            onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

Adres URL dysku 0 kończy się na /ElementinnerHTMLi w moim przypadku nie zawiera plików.

Następnie zamontuj go w katalogu lokalnym za pomocą wiersza polecenia, przeglądarki rclone lub internetowego interfejsu GUI od wersji 1.449 .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.