LinuxでOneDrive Business / Office 365を同期する方法


24

Microsoft OneDrive Business / Office 365 Proは1 TBのクラウドストレージを提供しますが、残念ながらLinuxで同期する方法はありませんでした。


2
Ask Ubuntuへようこそ!私たちは質疑応答サイトであり、フォーラムではありません。現在、指定された質問セクションに質問と回答の両方があります。してください編集下の解答セクションに(ページの下の方にボタンがあるはず)という答えとポストを削除するにはあなたのポストを。ありがとう!
セス

回答:


7

現在、実験的なonedrive-dは、Microsoft Sharepointリンクを受け入れないため、個人のOneDriveアカウントのみを同期できるオープンソースプログラムです。以下は、個人用に無料のGoodSync for Linuxを使用してOneDrive Business / Office 365を同期する方法です。

  1. Linuxマシンに適切なバージョンをインストールします。例:

    ./goodsync-linux-x86_64-release.run
    

    GoodSync ConnectセットアップとGsServer Web UIの両方について、n oで答えてください。

  2. WebブラウザーでOneDriveを開きます。右下の[クラシックOneDriveに戻る]を選択します。
  3. ブラウザのWebアドレスは次のよう 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. このステップで、WebブラウザがOneDrive / Office 365ページを開き、goodsyncがアカウントにアクセスできるようにするための承認を求めます。資格情報を入力すると、同期が開始されます。

制限:マイクロソフトは270文字を超えるURLリクエストを許可していないため、GoodSyncは長いパス名を持つファイルを同期できません。

楽しい!


3
ステップ7でWebブラウザが認証ページを開きません。手動で行う方法はありますか?
pat-s

3
ログインするためにWebブラウザも開かない
Haha TTpro

2
office365:/.../ Documentsのファイルシステムは、新しいOneDrive V2 APIに置き換えられました。新しいOneDriveにはブラウザーベースの認証(OAuth2)が必要であるため、[参照]ボタンをクリックしてOneDrive同期フォルダーを再参照します
Ferroao

6

Ubuntu 18.04以降

Ubuntu 18.04以降のデフォルトのUbuntuリポジトリにはOneDriveクライアントがあります。OneDriveは、Microsoftのクラウドストレージシステムです。このパッケージは、OneDriveクラウドストレージとの同期に特化したコマンドラインクライアントを提供します。

以下でインストールします:

sudo apt install onedrive

最初の実行時に、リンクで認証するように求められます。認証後はあなたがデーモンを有効にすることができsystemctl --user enable onedrive、その後とsystemctl --user start onedrive。詳細については、マンページを参照してくださいman onedrive。セットアップは非常に簡単で、所要時間はわずか5分です。


4
これはビジネスのためのOneDriveは動作しません
tricasse

1
@tricasse Office 365 Proで動作します
Mattia_98

2

onedrivedxybu が元々一般的に使用しているツールはまだOneDrive for Businessをサポートしていませんが、個人のOneDriveのみをサポートしています。ただし、derx060によるGitHubには、このプロジェクトの分岐点があり、ビジネスクライアント用に何らかの機能を備えた(ただしまだバグのある)実装があります。

警告:この方法を使用する場合、https://www.office.comでオンラインでファイルをチェックして、ファイルが正しく同期されたことを常に確認するか、このページの最後に示されているラッパースクリプトを使用することを強くお勧めします少なくともデスクトップ通知を使用してエラーを通知します!

onedrivedは、一部の変更の取得に失敗したり、正しくアップロードしたりして、OneDriveが(部分的に)同期されていない状態のままになることがあります。また、何らかの理由でそれ自体とのマージの競合が発生し、ホスト名を括弧とオプションの数字で追加することにより、ローカルでファイル名を変更することもあります。残念ながら、エラーに関する通知はありませんが、ログファイルのエントリを見ることができます。

これが発生した場合、たとえば、ファイルに触れたり、名前を変更したり、それらが入っているフォルダーを変更したりして、それぞれのファイルの同期を再試行できます。

ヒント: onedrivedライブラリには、特にOneDriveルートに直接保存されたファイルに関する問題があることが多いようです。OneDriveフォルダーに直接ファイルをダンプするのではなく、すべてのファイルをサブディレクトリに配置することをお勧めします。

馬鹿げているように聞こえますが、ファイルを作成またはコピー/移動するよりも、OneDrive Webクライアントを介してファイルをアップロードし、ローカルフォルダーに同期されるまで待つ(ただし、数分かかる場合がある)ことで問題が少ないようです。ローカルに。これが実用的であるか完全に無効であるかは、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. ngrokLinux の最新クライアントを公式Webサイトhttps://ngrok.com/downloadからダウンロードしますngrok-clientUbuntuリポジトリのパッケージは古すぎて、要件を満たしていません。
    ダウンロードしたngrok-stable-linux-amd64.zipアーカイブを解凍します。これは、単一含まれngrok、あなたの上の場所に置くべきバイナリ、$PATHに、例えば/usr/local/bin/
    ngrokへのサインアップはおそらく必要ありません。

  4. onedrived以下を使用してGitHubからPython3アプリケーションをインストールします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
    

    対話型ウィザードは、ブラウザでリンクを開くように2回要求します。リンクを開くには、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フォルダーにいくつかのファイルを配置して、同期するかどうかを確認してください。おそらく、https: //www.office.comのOneDrive Webアプリケーションにアクセスし、ローカルに追加したファイルがそこに表示されているかどうかを確認することで、そのことを確認できるはずです。

+ onedrivedを押すと、端末のプロセスを再び終了できます。CtrlC

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

それでも「onedrivedの認証に失敗しました:interaction_required」というメッセージが表示されます。ODfBアカウントを認証するための2番目のリンクを入力した後。これが起こる理由は何ですか?
Jimakos

@Jimakos申し訳ありませんが、私はそのメッセージに出会ったことはありません。残念ながらわからない。
バイトコマンダー

1

rcloneはOneDrive for Businessをサポートしています。Rcloneを使用してLinuxにOneDriveをマウントする方法(ビジネスおよび個人アカウントをサポート)-Linux Uprising Blogの使用方法の記事を参照してください。

これは、onedrive1rclone 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

/ElementinnerHTML私の場合、ドライブ0のURL はファイルで終わり、ファイルは含まれていません。

次に、v1.49 以降、コマンドライン、rclone-browser、またはWeb GUIを使用してローカルディレクトリにマウントします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.