Як синхронізувати OneDrive Business / Office 365 в Linux?


24

Microsoft OneDrive Business / Office 365 Pro пропонує 1 ТБ хмарного сховища, але, на жаль, ніколи не було способу його синхронізації в Linux.


2
Ласкаво просимо до Ask Ubuntu ! Ми - сайт із запитаннями та відповідями, а не форум. На даний момент у вас є як питання, так і відповідь у визначеному розділі запитань. Будь ласка , змініть свій пост , щоб видалити відповідь і пост, в розділі відповідей нижче (там повинна бути кнопка в нижній частині сторінки). Спасибі!
Сет

Відповіді:


7

В даний час експериментальний onedrive-d - це програма з відкритим кодом, яка може синхронізувати лише особисті облікові записи OneDrive, оскільки вона не приймає посилання Microsoft Sharepoint. Ось метод синхронізації OneDrive Business / Office 365 за допомогою GoodSync для Linux , який є безкоштовним для особистого використання.

  1. Встановіть відповідну версію на вашу машину Linux, наприклад:

    ./goodsync-linux-x86_64-release.run
    

    Відповіді на цей питання п Про як для установки GoodSync Connect і GsServer Web UI.

  2. Відкрийте OneDrive у веб-браузері. виберіть "Повернутися до Classic OneDrive" в правій нижній частині.
  3. Веб-адреса у вашому браузері тепер виглядатиме так: https://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents/Forms/All.aspxі на його основі отримайте ваше синхронізуюче посилання, яке буде office365://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents.
  4. Створіть новий файл у папці .goodsync у вашому домі:

    gedit ~/.goodsync/jobs.tix
    
  5. Введіть у файл такий код і збережіть його:

    <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. Почніть процес синхронізації:

    gsync sync "OneDrive_Sync"
    
  7. На цьому кроці ваш веб-браузер відкриє сторінку OneDrive / Office 365 і попросить вашої авторизації дозволити goodsync отримати доступ до вашого облікового запису. Після введення облікових даних почнеться синхронізація.

Обмеження: Microsoft не дозволяє запити URL-адреси довжиною понад 270 символів, і тому GoodSync НЕ МОЖЕ синхронізувати файли з довгими іменами.

Насолоджуйтесь!


3
Мій веб-браузер не відкриває сторінку авторизації на кроці 7. Будь-яка ідея, як це зробити вручну?
пт-с

3
Мій веб-браузер також не відкритий для входу
Haha TTpro

2
Файлова система в office365: /.../ Документи замінено новим API OneDrive V2. Натисніть кнопку Огляд, щоб переглядати папку для синхронізації OneDrive, оскільки для нового OneDrive потрібна автентифікація на базі браузера (OAuth2)
Ferroao

6

Ubuntu 18.04 та новіших версій

У сховищах Ubuntu за замовчуванням у Ubuntu 18.04 та новіших версіях є клієнт OneDrive. OneDrive - це хмарна система зберігання даних Microsoft. Цей пакет забезпечує клієнт командного рядка, що спеціалізується на синхронізації з хмарним сховищем OneDrive.

Встановіть його за допомогою:

sudo apt install onedrive

При першому запуску він просить підтвердити автентифікацію за допомогою посилання. Після аутентифікації ви можете ввімкнути Deamon за допомогою, systemctl --user enable onedriveа потім systemctl --user start onedrive. Подальші пояснення можна знайти на сторінці сторінки man onedrive. Це дуже просто в налаштуванні і займає лише п’ять хвилин.


4
Це не працює для OneDrive for Business
tricasse

1
@tricasse Це працює для Office 365 Pro
Mattia_98

2

У той час як оригінальний та широко використовуваний onedrivedінструмент від xybu досі не підтримує OneDrive for Business, а лише особисті OneDrives. однак на GitHub від derrix060 є вилка цього проекту, яка має певну функціональну (але все ще помилкову) реалізацію для бізнес-клієнта.

Попередження: Коли ви використовуєте цей метод, я настійно рекомендую завжди перевіряти, що файли синхронізовані правильно, перевіряючи їх в Інтернеті за адресою https://www.office.com та / або використовувати мій сценарій обгортки, показаний в кінці цієї сторінки принаймні отримувати інформацію про будь-які помилки за допомогою сповіщень на робочому столі!

Іноді здається, що onedrived не вдається зібрати деякі зміни або завантажити їх правильно, залишаючи OneDrive у (частково) несинхронізованому стані. Також може статися, що він створює конфлікти злиття з собою з якихось причин і перейменовує ваші файли локально, додаючи ім’я хоста у круглі дужки та необов'язково число. На жаль, повідомлень про помилки немає, але ви можете побачити записи у своєму журналі.

Якщо це сталося, ви можете спробувати синхронізувати відповідні файли знову, наприклад, торкнувшись їх або перейменувавши їх або папку, в якій вони знаходяться.

Порада: Схоже, що в бібліотеці onedrived часто виникають проблеми, особливо з файлами, збереженими безпосередньо в корені OneDrive. Можливо, краще розмістити всі файли у підкаталогах, а не скидати їх безпосередньо в папку OneDrive.

Хоча це звучить нерозумно, я також зауважив, що, здається, виникає менше проблем із завантаженням файлів через веб-клієнт OneDrive і чекати, поки вони синхронізуються назад у вашу локальну папку (що може зайняти кілька хвилин), ніж створювати або копіювати / переміщувати їх локально. Незалежно від того, чи це практично, чи повністю недійсно, мета OneDrive - це вирішити ваше власне рішення ...

Перегляньте файл readme проекту для повних інструкцій із встановлення, але ось короткий підсумок:

Установка

  1. Переконайтесь, що у вас не встановлена ​​інша версія onedrived(або onedrive-d).

  2. Встановити пакети залежностей:

    sudo apt install build-essential python3-dev libssl-dev inotify-tools python3-dbus libdbus-1-dev libdbus-glib-1-dev
    
  3. Завантажте останній ngrokклієнт для Linux з офіційного веб-сайту за посиланням https://ngrok.com/download . ngrok-clientПакет з репозиторіїв Ubuntu занадто старий і не відповідає вимогам.
    Розпакуйте завантажений ngrok-stable-linux-amd64.zipархів. Він містить єдиний ngrokдвійковий файл, який слід розмістити у своєму місці $PATH, наприклад, у /usr/local/bin/.
    Підписка на ngrok, мабуть, не потрібна.

  4. Встановіть onedrivedдодаток Python3 від GitHub за допомогою pip3:

    sudo -H pip3 install git+https://github.com/derrix060/onedriveClient.git
    
  5. Необов’язково налаштуйте розташування журналу файлів для onedrived, де ви можете перевірити проблеми, якщо щось не працює належним чином, наприклад:

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

Налаштування облікового запису та конфігурація накопичувача

Після того, як установка пройшла успішно, ви повинні налаштувати свій обліковий запис і диски:

  1. Додайте обліковий запис OneDrive for Business, використовуючи інтерактивний режим, запустивши:

    onedrived-pref account add -b
    

    Інтерактивний майстер попросить вас двічі відкрити посилання у вашому браузері, де вам доведеться авторизувати програму з вашим обліковим записом Microsoft Business.
    Він попросить вас вставити URL-адресу, до якої ви будете перенаправлені після підтвердження авторизації, знову в інтерактивний майстер. Виконайте, як сказано, і дотримуйтесь інструкції, яку дає вам команда.

  2. Перевірте успішно доданий обліковий запис, перевіривши результат команди нижче. Він повинен виглядати схожим і перераховувати обліковий запис, з яким ви ввійшли в систему:

    $ 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. Налаштуйте свої диски в інтерактивному режимі команд, запустивши:

    onedrived-pref drive set
    

    Ви побачите список усіх ваших дисків, і вас попросять ввести номер рядка диска, який ви хочете додати до локальної конфігурації.
    Потім потрібно вказати локальний каталог, який ви хочете використовувати як кореневу папку для синхронізації з вашим накопичувачем. Ви можете просто натиснути, Enterі він буде використовувати за замовчуванням ~/OneDrive. Якщо шлях не існує, він буде створений. Те саме для шляху до файлу ігнорування, який ви хочете використовувати, ви можете просто натиснути, Enterі він буде використовувати за замовчуванням ~/.config/onedrived/ignore_v2.txtі створити його, якщо необхідно.

  4. Перевірте висновок команди нижче, щоб відобразити інформацію про всі доступні та налаштовані диски. Він повинен показувати диск, який ви тільки що встановили, з правильними налаштуваннями під заголовком Drives that have been set up:

    onedrived-pref drive list
    

Запуск демона

Тепер, коли ваш накопичувач налаштований, вам потрібно спробувати запустити onedrivedдемон. Рекомендую спочатку запустити його в режимі налагодження, якщо є проблеми, які ви інакше пропустите. Це розпочнеться onedrivedна передньому плані:

onedrived start --debug

Якщо все гаразд і команда не виходить з ладу та не закривається, спробуйте помістити деякі файли у вашу локальну папку OneDrive і подивіться, чи синхронізується вона. Напевно, ви зможете переконатись у тому, відвідавши веб-додаток OneDrive за адресою https://www.office.com та перевіривши, чи там відображаються файли, які ви додали локально.

Ви можете завершити onedrivedпроцес у своєму терміналі знову, натиснувши Ctrl+ C.

Щоб запуститись onedrivedяк фоновий демон, запустіть його за допомогою:

onedrived start

Вам, ймовірно, слід додати цю команду до своїх програм запуску, щоб вона автоматично запускалася кожного разу при вході в систему. Будь ласка, зверніться до розділу Як автоматично запускати програми під час входу? для того.

Обгортка для сповіщень про помилки

Якщо ви хочете отримувати сповіщення на робочому столі, коли onedrivedзаписується помилка (наприклад, помилка синхронізації файлів), ось скрипт для обгортки, який аналізує файл журналу в режимі реального часу та використовує сповіщення-відправлення, щоб відобразити їх вам.

Ви можете запустити скрипт обгортки без аргументів (або помістити його у ваші програми автозапуску) замість onedrived startкоманди.

#!/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

Я все ще отримую повідомлення "Не вдалося авторизувати onedrived: response_required." після переходу на друге посилання для аутентифікації облікового запису ODfB. Будь-які ідеї, чому це може статися?
Jimakos

@Jimakos Вибачте, я ніколи не стикався з цим повідомленням. На жаль, ідеї немає.
Байт командир

1

rclone підтримує OneDrive для бізнесу. Дивіться статтю Як встановити OneDrive в Linux за допомогою Rclone (підтримує ділові та особисті облікові записи) - блог Linux Uprising для використання.

Ось мій приклад налаштування нового пульта дистанційного керування onedrive1з rclone 1.48.0 (у Fedora 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

URL-адреса диска 0 закінчується /ElementinnerHTMLі не містить файлів у моєму випадку.

Потім змонтуйте його в локальному каталозі за допомогою командного рядка, rclone-браузера або веб-інтерфейсу з V1.49 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.