Ubuntuをファイルサーバとして動作させているのですが、OneDriveと同期できるようなればかなり便利だと思いましたので、OneDrive Free Clientというソフトウェアを試してみました。
https://github.com/skilion/onedrive
環境
Ubuntu 18.04 Desktop 64bit
必要なソフトのインストール
以下をインストールしておきます。 私はUbuntu 18.04をインストールする際に、「最小インストール」を選んだため諸々のツールもここでインストールしました。
[bash]sudo apt install make sudo apt install git sudo apt install libcurl4-openssl-dev sudo apt install libsqlite3-dev wget http://downloads.dlang.org/releases/2.x/2.080.1/dmd_2.080.1-0_amd64.deb sudo gdebi dmd_2.080.1-0_amd64.deb[/bash]
今回は、Digital Mars D Compiler 2.080.1(2018年6月時点の最新版)をインストールしました。 その時点の最新版をインストールしておけば、たぶん大丈夫だと思います。
OneDrive Free Clientのインストール
OneDrive Free Clientは、gitのリポジトリをcloneしてインストールします。
[bash]cd ~ git clone https://github.com/skilion/onedrive.git cd onedrive make sudo make install[/bash]
OneDrive Free Client の設定
設定ファイルを所定の場所に配置し、必要な設定を行います。
[bash]mkdir -p ~/.config/onedrive cp ./config ~/.config/onedrive/config[/bash]
設定ファイルの中身はこんな感じです。
[bash]# Directory where the files will be synced sync_dir = "~/OneDrive"
Skip files and directories that match this pattern
skip_file = ".|~"[/bash]
sync_dir というパラメータが、Onedriveの同期ディレクトリになりますので、任意の場所を指定しましょう。 onedriveを実行するユーザがアクセスできるディレクトリであれば、どこでも大丈夫です。
特定のディレクトリやファイルのみを同期したい場合は、sync_list というファイルを作成して同期したいディレクトリ名やファイル名を記述します。 そうすることで、特定のディレクトリ・ファイルのみを同期することができます。
[bash]vi ~/.config/onedrive/sync_list[/bash]
sync_listの中身は、こんな感じで書きます。(githubのreadmeそのままですが) 単純に、ディレクトリ名を1行ずつ書けばOKです。
[bash]Backup Documents/latest_report.docx Work/ProjectX notes.txt[/bash]
sync_listを変更したら、onedriveコマンドを使って完全同期を実行する必要がありますので、注意が必要です。
[bash]onedrive --resync[/bash]
自動起動の設定
Onedriveの設定が終わったら、自動起動を有効化し起動させます。
[bash]systemctl --user enable onedrive systemctl --user start onedrive[/bash]
初期起動後の設定
onedriveコマンドを実行して、初期設定を行います。
onedriveコマンドを実行するとターミナルの標準出力にURLが表示されますので、ブラウザでこのURLへアクセスしましょう。 こんな感じです。
[bash]Authorize this app visiting:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=**********[/bash]
ブラウザでアクセスすると、Microsoftアカウントのログイン画面になりますので、同期したいOnedriveのアカウントでログインしましょう。 Onedriveクライアント(今回だとOneDrive Free Client)からのアクセスを許可するかの確認を求められますので、許可しましょう。
その後、真っ白なページが表示されます。 ターミナルには、以下のようにURIの入力を求める表示が出ていると思いますので、この真っ白なページのURLをターミナルに入力します。
[bash]Enter the response uri:[/bash]
これで、Onedriveの同期が始まります。
その他
OneDrive Free Clientのログは、以下のコマンドで確認できます。
[bash]journalctl --user-unit onedrive[/bash]
-fオプションをつけると、ログを流し続けることができます。「tail -f」と同じですね。
[bash]journalctl --user-unit onedrive -f[/bash]
まとめ
私の環境では、問題なくOneDriveと同期することができました。 これで、家の中にある全てのPCで写真などを共有しつつ、OneDriveへもコピーすることができるので、とても便利になったと思います。 まだ使い始めなので、同期速度などがどうなのかはこれからの評価になりますが、まずは満足しています。 インストール自体も楽なので、おすすめです。