DropBox

Dropbox Uploader

先日の記事「Dropbox Application」の続きとなっております。
今回は"Dropbox Uploader"というシェルスクリプトの導入・使用方法を紹介します。

"Dropbox Uploader"を用いるとDropboxのファイルをMacの「ターミナル」、Windowsの「コマンドプロンプト」等のCUI上から操作することができます。

Contents






目次

Dropbox Uploader

通常Dropboxは専用のアプリを介してファイルを同期しますが、「Dropbox Uploader」を利用するとAPI経由でDropbox内のファイルを操作ができます。
GitHubのリポジトリはこちら


実際にどのような操作ができるかというと、

  • アップロード
  • ダウンロード
  • ファイル/フォルダのコピー
  • ファイル/フォルダの移動
  • ファイル/フォルダの削除
  • ディレクトリの作成
  • ファイル/フォルダのリスト化
  • ファイル/フォルダの共有用URLを取得
  • Dropboxのアカウント情報を取得
  • Dropboxとのリレーションを解除
  • と実に様々。

    手作業のアップロード・ダウンロードはDropboxの専用アプリを使った方がいいかもしれませんが、定期的に繰り返す機械的な作業には"Dropbox Uploader"は向いていると思います。
    cronを組んでローカルへ自動的にバックアップを取ったり、カメラのタイマーで写真を撮りDropboxへアップロードすれば監視カメラのような物まで作れそうです。

    最近流行りの"IoT"ですね。



    導入のきっかけ

    先日の記事「Dropbox Application」でもお話ししましたが、私はDropboxを使って「オンラインフォトフレーム」を作りたいなと思いました。

    Dropboxと自動的(一定時間)に同期するフォトフレーム

    つまりフォトフレームをいちいちPCに繋いで写真を入れ替えるのではなく、スマートフォン等からDropboxにアクセスし、写真を追加・削除すればフォトフレームに反映される、という機能を持った物を作りたいと思ったのがきっかけです。

    この"Dropbox Uploader"がフォトフレームの肝となっているわけです。

    この記事はオンラインフォトフレームの作り方を紹介する第二弾の記事で、興味がありましたら最後まで読んでいただけると幸いです。





    導入手順

    早速"Dropbox Uploader"を導入していきます。
    これらの手順は今日現在動作が確認できている手順です。

    動作確認済み環境
    ・MacOS 10.14.2
    ・Raspbian November 2018

    Dropboxのアカウントがあり、Dropbox appが作成済みとします。
    Dropbox appの作成の仕方はこちら↓
    Dropbox Application



    1.Dropbox-Uploaderの入手

    1〜5までを順番に実行してください。


    [shell gutter="false"]
    # 1. テンプラリーフォルダへ移動する
    $ cd /tmp
    [/shell]


    [shell gutter="false"]
    # 2. GitHubのリポジトリを複製(clone)する
    $ sudo git clone https://github.com/andreafabrizi/Dropbox-Uploader/
    [/shell]

    パスワードを要求されますので入力をします。(文字は表示されません)
    [shell]
    Password:
    [/shell]
    以下の表示が出れば複製完了です。
    [shell wraplines="true"]
    Cloning into 'Dropbox-Uploader'...
    remote: Enumerating objects: 945, done.
    remote: Total 945 (delta 0), reused 0 (delta 0), pack-reused 945
    Receiving objects: 100% (945/945), 325.88 KiB | 1.03 MiB/s, done.
    Resolving deltas: 100% (500/500), done.
    [/shell]


    [shell gutter="false"]
    # 3. 「Dropbox-Uploader」フォルダ内へ移動する
    $ cd Dropbox-Uploader
    [/shell]


    [shell gutter="false"]
    # 4. dropbox_uploader.shのパーミッションを755[rwxr-xr-x]に設定する
    # (実行権限を与える)
    $ sudo chmod 755 dropbox_uploader.sh
    [/shell]


    [shell gutter="false"]
    # 5. dropbox_uploader.shを/usr/local/bin/へ移動する
    # ※パスが通っているところに置きます
    $ sudo mv /tmp/Dropbox-Uploader/dropbox_uploader.sh /usr/local/bin/
    [/shell]



    2.アクティベート作業

    上の続きです。


    [shell gutter="false"]
    # 6. /usr/local/bin/に移る
    $ cd /usr/local/bin/
    [/shell]


    [shell gutter="false"]
    # 7. dropbox_uploader.shを実行する
    $ ./dropbox_uploader.sh
    [/shell]

    実行すると以下のような表示が出ます。
    [shell wraplines="true"]
    This is the first time you run this script, please follow the instructions:

    1) Open the following URL in your Browser, and log in using your account: https://www.dropbox.com/developers/apps
    2) Click on "Create App", then select "Dropbox API app"
    3) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder
    4) Enter the "App Name" that you prefer (e.g. MyUploader2423180339404)

    Now, click on the "Create App" button.

    When your new App is successfully created, please click on the Generate button
    under the 'Generated access token' section, then copy and paste the new access token here:

    # Access token:
    [/shell]
    Access tokenを要求してくるのでそのまま入力します。


    [shell wraplines="true"]
    > The access token is ××××××××××××××××××××××××. Looks ok? [y/N]:
    [/shell]
    Access tokenの確認をしてくるので"y"か"N"で答えます。


    [shell]
    The configuration has been saved.
    [/shell]
    Access tokenを保存できました。


    これでDropbox UploaderとDropbox appとのアクティベートが完了です。


    アクティベートが完了している状態でdropbox_uploader.shを再度実行すると、、、
    [shell gutter="false"]
    $ ./dropbox_uploader.sh
    [/shell]

    以下のようにversionやコマンドの情報が見れます。
    [shell]
    Dropbox Uploader v1.0
    Andrea Fabrizi - andrea.fabrizi@gmail.com

    Usage: ./dropbox_uploader.sh [PARAMETERS] COMMAND...

    Commands:
    upload
    download [LOCAL_FILE/DIR]
    delete
    move
    copy
    mkdir
    list [REMOTE_DIR]
    monitor [REMOTE_DIR] [TIMEOUT]
    share
    saveurl
    search
    info
    space
    unlink

    Optional parameters:
    -f Load the configuration file from a specific file
    -s Skip already existing files when download/upload. Default: Overwrite
    -d Enable DEBUG mode
    -q Quiet mode. Don't show messages
    -h Show file sizes in human readable format
    -p Show cURL progress meter
    -k Doesn't check for SSL certificates (insecure)
    -x Ignores/excludes directories or files from syncing. -x filename -x directoryname. example: -x .git

    For more info and examples, please see the README file.
    [/shell]




    ちなみにアクティベートが完了すると、ホームディレクトリにAccess tokenが記入された隠しファイルが作成されます。
    [shell gutter="false"]
    $ cd ~
    $ sudo view .dropbox_uploader
    [/shell]
    隠しファイルなのでパスワードが要求されますが中身を確認できます。





    使用方法

    簡単な使用方法をご説明します。
    これから記述するコードはdropbox_uploader.shがあるディレクトリで実行します。

    [shell gutter="false"]
    # upload ... LOCALをREMOTEへアップロードします
    $ ./dropbox_uploader.sh upload LOCAL REMOTE

    # download ... REMOTEをLOCALへダウンロードします
    $ ./dropbox_uploader.sh download REMOTE LOCAL

    # delete ... REMOTEを削除します
    $ ./dropbox_uploader.sh delete REMOTE

    # move ... REMOTEをREMOTEへ移動します
    $ ./dropbox_uploader.sh move REMOTE REMOTE

    # copy ... REMOTEをREMOTEへコピーします
    $ ./dropbox_uploader.sh copy REMOTE REMOTE
     

    # mkdir ... REMOTEにディレクトリを作ります
    $ ./dropbox_uploader.sh mkdir REMOTE

    # list ... REMOTEの中身をリスト化します
    $ ./dropbox_uploader.sh list REMOTE

    # share ... REMOTEを共有できるURLを生成します
    $ ./dropbox_uploader.sh share REMOTE

    # info ... dropboxの名前,ユーザーID,e-mail,国を表示します
    $ ./dropbox_uploader.sh info
    [/shell]

    LOCALはローカル環境上のフルパス
    REMOTEはDropbox内のパス
    ※ただしDropbox appのPermission typeがapp folderの場合
      アプリ用フォルダがトップディレクトリとなります。
      アプリ用フォルダ以外には何もできません。詳しくはこちら



    コマンドの使用例(upload編)

    1.デスクトップ(/Users/〇〇〇/Desktop/)の写真(dropbox.jpg)を
       Dropboxのフォルダ(photo)へ「abcde.jpg」という名前でアップロードする。
    [shell gutter="false"]
    $ ./dropbox_uploader.sh upload /Users/〇〇〇/Desktop/dropbox.jpg photo/abcde.jpg
    [/shell]

    すると下記のように返事が来ます。
    [shell gutter="false"]
    > Uploading "/Users/〇〇〇/Desktop/dropbox.jpg" to "photo/abcde.jpg"... DONE
    [/shell]
    DONEとなっていればアップロード成功です。


    [shell gutter="false"]
    > Uploading "/Users/〇〇〇/Desktop/dropbox.jpg" to "photo/abcde.jpg"... FAILED
    An error occurred requesting /upload
    Some error occured. Please check the log.
    [/shell]
    FAILEDとなってしまった場合アップロード失敗です。
    Access token等が間違ってないか確認してください。





    まとめ

    うまく導入できましたでしょうか?
    次回はこの"Dropbox Uploader"を使いオンラインフォトフレームを完成させちゃいます。
    是非みなさんも作ってみてください。

    -DropBox
    -,