KING JIM ポメラDM250とMicrosoft OneDrive同期

KING JIMポメラDM250でDebian Linuxが動作することは前回の記事で書きました。

今回はこのDebian Linux環境で、ポメラ本体機能を使用して編集したテキストファイル群をMicrosoft OneDriveと同期する方法を書きたいと思います。

注意書き

  • Microsoft OneDrive同期のすべての動作を試したわけではありませんので、同期を行う際は注意して自己責任で行ってください
  • 同期方法によってはファイル消失する場合がありますので自己責任で行ってください
  • 単一方向同期、双方向同期を理解した上で自己責任で行ってください

Debian Linux OneDriveコマンドとRclone

Debian Linux環境でMicrosoft OneDriveと同期には以下の2つのソフトウェアを検討しました。
OneDriveコマンドは今のところ同期に使用できるディレクトリーが限られていますので、Rcloneを使用しています。

それぞれ特徴があり、Microsoft OneDriveと同期するには手間がかかりますので、詳しく説明したいと思います。

Debian Linux OneDriveコマンド

Debian LinuxのパッケージにOneDriveコマンドがあります。
双方向同期を行えますが、同期に使用できるディレクトリーが今のところLinux動作時のみにアクセスできるものに限られます。

  • OneDriveコマンドのインストール
sudo /opt/bin/wifi_switch on
sudo apt-get install curl
sudo apt-get install onedrive
  • OneDriveコマンドの初回設定(アプリケーション認証はPCのブラウザーで行う方がやりやすい)
onedrive

以下のように表示されるので、表示されたURLをPCのブラウザーURL欄に打ち込んでonedriveアプリケーションの認証します。
ブラウザーが自動的に遷移するので、ブラウザーのURL欄に表示されたURLを"Enter the respose uri:"の後に入力します。

Authorize this app visiting:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=~クライアントIDなど~

Enter the response uri:ここにブラウザーURL欄のURLを入力する

認証成功すると以下のように表示されonedriveコマンドが使用可能になります。

Application has been successfully authorized, however no additional command switches were provided.
  • OneDriveのヘルプを見てみる
onedrive --help
  • OneDriveの設定を見てみる
onedrive --display-config

設定にある"sync_dir"の通り同期されるディレクトリーは"/home/pomera/OneDrive/"になっています。
残念ながらこれはLinux動作時にのみアクセスできるディレクトリーになりますので、ポメラ本体機能で編集できません。
設定変更は可能ですが、Linux/ポメラ共有領域を同期ディレクトリーに設定することはできません。

  • 試しに同期する

実際のディレクトリーやファイルの同期を行わないで試しに同期するには以下の"--dry-run"オプションを使用します。

onedrive --synchronize --dry-run

同期をかけてしまうと、Microsoft OneDriveにあるすべてのディレクトリーとファイルが同期されてしまいます。
特定のディレクトリーのみ同期したいときは"--single-directory"オプションを使用します。この場合"ドキュメント\test"ディレクトリーのみ同期されます。

onedrive --synchronize --single-directory 'ドキュメント/test'

Rclone

Rcloneは"rsync for cloud storage"の名の通りクラウドストレージと同期を行うコマンドラインプログラムです。
単一方向同期となりますが、OneDriveコマンドと違いLinux/ポメラ共有領域との同期が行えます。数十のクラウトストレージ/システムに対応しています。
ここではMicrosoft OneDriveと同期する方法を記述します。

  • Rcloneインストール
sudo /opt/bin/wifi_switch on
sudo apt-get install curl
sudo -v ; curl https://rclone.org/install.sh | sudo bash
  • Rclone用のClient IDを取得する

Creating Client ID for OneDrive Personalの手順に従ってRclone用のClient IDを取得します。PCのブラウザーを利用した方が良いです。

  1. 次のURLを開き、[+新規登録]ボタンを押します。
  2. アプリケーション名を入力し(例:Rclone)、「サポートされているアカウントの種類」から「任意の組織ディレクトリ内のアカウント (任意の Azure AD ディレクトリ - マルチテナント) と個人の Microsoft アカウント (SkypeXbox など)」を選びます。「リダイレクトURI」の「プラットフォームの選択」から「Web」を選択し、リダイレクトURIに手動で「http://localhost:53682」を入力して、[登録]ボタンを押します。
  3. 左ペインのメニューから「証明書とシークレット」を押し、[+新しいクライアント シークレット]ボタンを押します。「説明」欄に適当な説明を入力します(例:Rclone)。 「有効期限」を「12か月」にして[追加]ボタンを押します。
  4. 左ペインのメニューから「APIのアクセス許可」を押し、[+アクセス許可の追加]ボタンを押します。[Microsoft Graph]ボタンを押し、[委任されたアクセス許可]ボタンを押します。以下のアクセス許可を追加し、[アクセス許可の追加]ボタンを押します。
    Files.Read, Files.ReadWrite, Files.Read.All, Files.ReadWrite.All, offline_access, User.Read, Sites.Read.All

  5. Rclone設定

Rcloneの設定にはブラウザーアクセスが必要になります。ここではGUI環境のxfceを利用します。
fbtermを使用している場合は、GUI環境を開始できませんので終了してからxfceを開始してください。

startx
  1. xfceが開始したら[Alt]+[F1]でメニューを表示します。
  2. 「ターミナルエミュレーター」を実行します。
  3. 以下のように「ターミナルエミュレーター」と「ウェブブラウザー」でRcloneの設定を行っていきます
rclone config

No remotes found, make a new one?
n) New remote
s) Set configuretion password
q) Quit config
n/ s/ q> n

Enter name for new remote.
name> onedrive(ここで使用した名前を後で使用します)

Storage> onedrive

Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id> 何も入力せず[enter]

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret> 何も入力せず[enter]

Option region.
1 / Microsoft Cloud Global
  \ (global) 
[略]
region> 1

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

y) Yes (default)
n) No
y/n> y

<5>NOTICE: If your browser doesn't open automatically go to the following link:
http://127.0.0.1:53682/auth?state=~略~
<5>NOTICE: Log in and authorize rclone for access
<5>NOTICE: Waiting for code...

ここで[Alt]+[F1]でウェブラウザーを起動してURLを入力する
Microsoftサインイン画面が開くのでOneDriveで使用しているアカウント/パスワードでサインインする
([tab]キーでボタンを切り替えるとよい)

ウェブブラウザーに「Success!」が表示されたら[Alt]+[tab]でターミナルエミュレーターに戻る

Option config_type.
Type of connection
Choose a number from below, or type in an existing string value.
Press Enter for the default (onedrive).
1 / OneDrive Personal or Business
  \ (onedrive)
[略]
config_type> 1

Option config_driveid.
Select drive you want to use
Choose a number from below, or type in your own string value.
Press Enter for the default (~ID~)
1 / (personal)
  \ (~ID~)
config_driveid> 1

Drive OK?

Found drive "root" of type "personal"
URL: https://onedrive.live.com/?cid=~ID~

y) Yes (default)
n) No
y/n> y

[略]
Keep this "onedrive" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

[略]
q) Quit config
e/n/d/r/c/s/q> q
rclone lsd onedrive:
  • Rclone同期(単一方向同期)

ポメラLinux/ポメラ共有領域]→[Microsoft OneDrive]
ポメラ本体のLinux/ポメラ共有領域からMicrosoft OneDriveの「ドキュメント\test」ディレクトリーに単一方向同期をかけるときは以下のコマンドを使用します。
これはポメラ本体機能を使用して「Linux/ポメラ共有領域/test/」にあるテキストファイルを更新した際、Microsoft OneDriveの「ドキュメント\test」ディレクトリーと同期をとる際に使用します。

rclone sync /mnt/sd/test/ onedrive:ドキュメント/test/ --progress
  • Rclone同期(単一方向同期)

Microsoft OneDrive]→[ポメラLinux/ポメラ共有領域]
Microsoft OneDriveの「ドキュメント\test」ディレクトリーからポメラ本体のLinux/ポメラ共有領域に単一方向同期をかけるときは以下のコマンドを使用します。
これはPC/スマートフォンを使用してMicrosoft OneDriveの「ドキュメント\test」ディレクトリーにあるテキストファイルを更新した際、「Linux/ポメラ共有領域/test/」と同期をとる際に使用します。

rclone sync onedrive:ドキュメント/test/ /mnt/sd/test/ --progress