PythonでOnedriveにフォルダをアップロード[Odrive]

11月 18, 2020

Python経由でOnedriveにアップロードする方法として、Microsoftが作成したOnedrive SDKの利用が考えられるが、このSDKは少し扱いにくい。そこで他の方法を探したところ、Odriveというウェブサービスを使って、アップロードができることがわかった。本記事では、Odriveをインストールし、PythonでOnedriveにフォルダをアップロードするまでを紹介する。

インストール

Linux64bitの場合はこちら

$ od="$HOME/.odrive-agent/bin" && curl -L "https://dl.odrive.com/odrive-py" --create-dirs -o "$od/odrive.py" && curl -L "https://dl.odrive.com/odriveagent-lnx-64" | tar -xvzf- -C "$od/" && curl -L "https://dl.odrive.com/odrivecli-lnx-64" | tar -xvzf- -C "$od/" 

ラズパイの場合はこちら # ラズパイもサポートされているとは嬉しい。IoT機器の開発が捗りそうだ。

$ od="$HOME/.odrive-agent/bin" && curl -L "https://dl.odrive.com/odrive-py" --create-dirs -o "$od/odrive.py" && curl -L "https://dl.odrive.com/odriveagent-rpi" | tar -xvzf- -C "$od/" && curl -L "https://dl.odrive.com/odrivecli-rpi" | tar -xvzf- -C "$od/"

WindowsやMacで使う場合にもコマンドが用意されている。

インストール後、odriveをバックグラウンドで起動

$ nohup "$HOME/.odrive-agent/bin/odriveagent" > /dev/null 2>&1 &

起動後、以下のstatusコマンドを実行し、isActivated: Trueの表示があれば、インストール成功

$ "$HOME/.odrive-agent/bin/odrive" status

認証

公式の手順に従い、Authontication CodesをCLIに登録する。Authontication Codesは、上のリンクをクリックし、+Create Auth Keyをクリックし、作成する。

CLIにキーを登録するときは以下のコマンド。

$ "$HOME/.odrive-agent/bin/odrive" authenticate 00000000-0000-0000-0000-000000000000-00000000

登録に成功すると、"Hello {ユーザー名}" が表示される。

フォルダのアップロード

試しにホームディレクトリにhogeというフォルダを作って、その中にhoge.txtというファイルを作って、OneDriveのodriveというフォルダにアップロードしてみる。

引数は、odrive {local path} {remote path}になっており、{remote path}には各クラウドに応じた名前を付ける必要がある。私はOneDriveに接続したので、/OneDriveを指定した。

他にも、GoogleDriveであった場合には、/GoogleDriveとなる。さらに、{remote path}にはルート以下のフォルダを指定することも可能で、私は、OneDriveのルート直下にodriveというフォルダを作成し、/OneDrive/odriveとして指定した。このように、odriveではアップロード先を容易に指定できるという利点がある。

以下がフォルダをアップロードするコマンドになる。

$ mkdir ~/hoge
$ touch ~/hoge/hoge.txt
$ python ~/.odrive-agent/bin/odrive.py backup ./hoge /OneDrive/odrive

実行後、OneDriveを確認すると、hogeフォルダ以下にあるhoge.txtが確かにアップロードされていることを確認。

さらに、hoge.txtファイルを消去し、代わりにhoge2.txtを追加した後、hoge1.txtとhoge2.txtが正しくアップロードできるかを実験してみた。

$ rm ~/hoge/hoge.txt
$ touch ~/hoge/hoge2.txt
$ python ~/.odrive-agent/bin/odrive.py backup ./hoge /OneDrive/odrive

結果、hoge.txtとhoge2.txtの両方が無事にhogeフォルダにアップロードされていることを確認した。しかし、CLIからは以下の警告文がでた。

エラー全文
Unable to add backup folder for: /home/hoge. Unable to create backup. The backup destination already has a folder with the same name. Please pick a new backup destination or rename the folder.
/home/hoge is now being backed up.

この警告文がでて良いのかどうかはわからないが、とりあえず動くことは確認できた。

odriveでは、フォルダのアップロードのだけではなく、フォルダの同期なども行うことができる、詳しく知りたいときは引数に-hを付けてあげれば、機能を参照することができる。または、公式のドキュメントを参照にするとよい。

Odrive,Python

Posted by vastee