質問: linuxでonedrive business / office 365を同期する方法 microsoft onedrive business/office 365 proは1 tbのクラウドストレージを提供していますが、残念ながらlinuxで同期する方法はありませんでした。
回答: xybuが元々使用していたonedrivedツールは、onedrive for businessではなく個人のonedriveのみをサポートしています。ただし、 derrix060によるgithubでのこのプロジェクトの分岐 があり、ビジネスクライアント向けに何らかの形で(まだバグがありますが)実装されています。 警告:この方法を使用する場合は、 https:/でオンラインでファイルをチェックして、ファイルが正しく同期されたことを常に確認することを強くお勧めします/www.office.com 、および/またはこのページの最後に示すラッパースクリプトを使用して、少なくともデスクトップ通知を使用してエラーを通知します! onedrivedが一部の変更の取得に失敗したり、正しくアップロードしたりして、onedriveが(部分的に)同期されていない状態になることがあります。また、何らかの理由で自身とのマージの競合が発生し、ホスト名を括弧とオプションで数字で追加することにより、ファイルの名前をローカルで変更することもあります。残念ながら、エラーに関する通知はありませんが、ログファイルのエントリを見ることができます。 これが発生した場合は、たとえば、それらに触れたり、名前を変更したり、フォルダーの名前を変更したりします。 ヒント:onedrivedライブラリには、特にonedriveルートに直接保存されたファイルに関する問題があることが多いようです。 onedriveフォルダーに直接ダンプするのではなく、すべてのファイルをサブディレクトリに配置する方がおそらく良いでしょう。 馬鹿げているように聞こえますが、ファイルを作成またはコピー/移動するよりも、onedrive webクライアントを介してファイルをアップロードし、ローカルフォルダーに同期されるまで待機する(ただし数分かかる場合がある)方が問題が少ないようです。ローカル。これが実用的であるか完全に無効であるかは、onedriveの目的はあなた自身の決定次第です... 完全なインストール手順については、プロジェクトのreadmeファイルを参照してください。ただし、簡単な要約を次に示します。installation onedrived(またはonedrive-d)の他のバージョンがインストールされていないことを確認してください。 依存関係パッケージをインストールします。 sudo apt install build-essential python3-dev libssl-dev inotify-tools python3-dbus libdbus-1-dev libdbus-glib-1-dev https://ngrok.com/download の公式webサイトからlinux用の最新のngrokクライアントをダウンロードします。 ubuntuリポジトリのngrok-clientパッケージは古すぎるため、要件を満たしていません。 ダウンロードしたngrok-stable-linux-amd64.zipアーカイブを解凍します。単一のngrokバイナリが含まれており、$pathの場所に配置する必要があります。 /usr/local/bin/に。 ngrokへのサインアップはおそらく必要ありません。 pip3を使用して、githubからonedrived python3アプリケーションをインストールします。 sudo -h pip3 install git+https://github.com/derrix060/onedriveclient.git 必要に応じて、onedrivedのログファイルの場所を設定します。ここでは、何かが正常に機能しない場合に問題をチェックできます。 onedrived-pref config set logfile_path ~/.config/onedrived/onedrived.log アカウントのセットアップとドライブの構成インストールが成功したら、アカウントとドライブを設定する必要があります。 以下を実行して、インタラクティブモードを使用してonedrive for businessアカウントを追加します。 onedrived-pref account add -b 対話型ウィザードは、ブラウザでリンクを開くように2回要求します。このリンクでは、microsoft businessアカウントでアプリケーションを承認する必要があります。 承認を確認した後、リダイレクト先のurlをインタラクティブウィザードに貼り付けるように求められます。指示どおりに実行し、コマンドの指示に従ってください。 以下のコマンドの出力を確認して、アカウントが正常に追加されたことを確認します。次のように表示され、ログインしているアカウントがリストされます。 $ 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 以下を実行して、ドライブを対話型コマンドモードで構成します。 onedrived-pref drive set すべてのドライブのリストが表示され、ローカル構成に追加するドライブの行番号の入力を求められます。 次に、ドライブと同期するためのルートフォルダーとして使用するローカルディレクトリを指定する必要があります。あなたはただ打つことができます enter デフォルトの~/onedriveを使用します。パスが存在しない場合は作成されます。使用したい無視ファイルへのパスについても同じです。 enter デフォルトの~/.config/onedrived/ignore_v2.txtを使用し、必要に応じて作成します。 以下のコマンドの出力を確認して、使用可能な構成済みのすべてのドライブに関する情報を表示します。 drives that have been set upの見出しの下に、正しい設定でセットアップしたドライブが表示されます。 onedrived-pref drive list デーモンの起動ドライブが構成されたので、onedrivedデーモンを試して起動する必要があります。そうでなければ見逃してしまうような問題がある場合に備えて、まずデバッグモードで起動することをお勧めします。これはフォアグラウンドでonedrivedを開始します:onedrived start --debug すべてが正常で、コマンドがクラッシュして終了しない場合は、ローカルのonedriveフォルダーにいくつかのファイルを配置して、同期するかどうかを確認してください。 https://www.office.com のonedrive webアプリケーションにアクセスし、ローカルに追加したファイルがそこに表示されているかどうかを確認することで、おそらく確認できるはずです。を押して、端末の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