Как синхронизировать OneDrive Business / Office 365 в Linux?

24

Microsoft OneDrive Business / Office 365 Pro предлагает облачное хранилище объемом 1 ТБ, но, к сожалению, в Linux никогда не было способа его синхронизации.

Сайед Метвали
источник
2
Добро пожаловать в Спросите 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 в веб-браузере. выберите «Вернуться к классическому 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. Есть идеи, как это сделать вручную?
Пат-S
3
Мой веб-браузер также не открыт для входа
Haha TTpro
2
Файловая система в office365: /.../ Документы заменены новым API OneDrive V2. Нажмите кнопку «Обзор», чтобы повторно просмотреть папку синхронизации OneDrive, поскольку New OneDrive требует аутентификации на основе браузера (OAuth2)
Ferroao,
6

Ubuntu 18.04 и позже

В репозиториях Ubuntu по умолчанию в Ubuntu 18.04 и более поздних версиях есть клиент OneDrive. OneDrive - это облачная система хранения данных Microsoft. Этот пакет предоставляет клиент командной строки, специализирующийся на синхронизации с облачным хранилищем OneDrive.

Установите его с помощью:

sudo apt install onedrive

При первом запуске он просит вас пройти аутентификацию по ссылке. После аутентификации вы можете включить демона с помощью systemctl --user enable onedriveи затем systemctl --user start onedrive. Дальнейшие объяснения можно найти на странице руководства man onedrive. Он очень прост в настройке и занимает всего около пяти минут.

Mattia_98
источник
4
Это не работает для OneDrive для бизнеса
tricasse
1
@tricasse Это работает для Office 365 Pro
Mattia_98
2

Хотя оригинальный и широко используемый onedrivedинструмент от Xybu по-прежнему не поддерживает OneDrive для бизнеса, а только личные OneDrives. тем не менее, есть derk этого проекта на 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 для бизнеса, используя интерактивный режим, выполнив:

    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регистрируется ошибка (например, ошибка синхронизации файла), вот скрипт-обертка, который анализирует файл журнала в режиме реального времени и использует notify-send для их отображения вам.

Вы можете запустить скрипт-обертку без аргументов (или поместить его в свои автозапускаемые приложения) вместо 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
Byte Commander
источник
Я все еще получаю сообщение "Не удалось авторизовать onedrived: взаимодействия_required." после того, как я введу вторую ссылку для аутентификации учетной записи ODfB. Есть идеи, почему это может произойти?
Джимакос
@Jimakos Извините, я никогда не сталкивался с этим сообщением. Понятия не имею, к сожалению.
Byte Commander
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-browser или веб-интерфейс, начиная с v1.49 .

criticabug
источник