【Dropbox】scriptを使用してのファイル転送処理


最近では、Dropboxを使用している方が多いと思います。
データのアップロードなど苦労していませんか？

下記の方法を実施することで、scriptを使用してDropboxへのファイル転送や様々な操作を実施することが可能となります。

今回は、このscriptが使用できるようにするための導入部分について触れたいと思います。

なお、今回は下記URL先の情報を参考に実施しました。

http://raspi.seesaa.net/article/415316808.html


-

# 導入手順

## 1.Dropboxのアカウントを作成する
- きっとアカウントお持ちだと思いますが、念のため持ってない方は事前に作成してください。

## 2.スクリプトファイルの取得
- 今回使用するスクリプトファイルは、gitのリポジトリから入手する。
- shファイルの配置先はパスが通っている場所にした方がフルパスにする必要がないので楽です。

````コマンド
$ cd /tmp
$ sudo git clone https://github.com/andreafabrizi/Dropbox-Uploader/
$ cd Dropbox-Uploader
$ sudo chmod 755 dropbox_uploader.sh
$ sudo mv /tmp/Dropbox-Uploader/dropbox_uploader.sh /usr/local/bin/
````

## 3.Dropbox appを作成する
- ツールで使用するapp keyとapp seacretの情報を取得するためにappを作成する。

### 3.1.手順
①下記のURLを開く
　https://www.dropbox.com/developers/apps

②[My app]を選択し、`Create app`をクリックする
![kobito.1466524776.131158.png](https://qiita-image-store.s3.amazonaws.com/0/33479/99a5b4f1-0887-5071-460d-1aa68733eb42.png "kobito.1466524776.131158.png")

③APIのタイプを選ぶ
- 個人的に使用するのであれば、`Dropbox API`でいいと思います。

![kobito.1466524900.796329.png](https://qiita-image-store.s3.amazonaws.com/0/33479/69f17b2a-0754-f56f-2a1a-972952c9f832.png "kobito.1466524900.796329.png")

④アクセスタイプを選ぶ
- 不特定のファイルをアップロードするのであればフルアクセスがいいと思います。

![kobito.1466524983.229997.png](https://qiita-image-store.s3.amazonaws.com/0/33479/63fc7111-2b55-a996-f7cd-b7e6b303e0e5.png "kobito.1466524983.229997.png")

⑤appの名称を指定する
- ここの名前には、`dropbox`というキーワードを指定することはできないので注意が必要となる。

![kobito.1466525050.621378.png](https://qiita-image-store.s3.amazonaws.com/0/33479/5fd49aed-b925-380a-b6b5-cb59386d9275.png "kobito.1466525050.621378.png")


⑥作成する
![kobito.1466525069.115288.png](https://qiita-image-store.s3.amazonaws.com/0/33479/0f19bd6a-f8d0-c9d5-d66e-1407fa6401e2.png "kobito.1466525069.115288.png")


⑦App keyとApp Seacretの情報を控える
![kobito.1466525128.404641.png](https://qiita-image-store.s3.amazonaws.com/0/33479/e4e63d5a-9752-95f9-fa78-a39b1d129eae.png "kobito.1466525128.404641.png")


## 4.アクティベート設定する

````コマンド
$ cd /usr/local/bin/
$ ./dropbox_uploader.sh
$ ./dropbox_uploader.sh
 This is the first time you run this script.
 
 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) Select "Files and datastores"
 4) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder
 5) Enter the "App Name" that you prefer (e.g. MyUploader84512395614070)
 
 Now, click on the "Create App" button.
 
 When your new App is successfully created, please type the
 App Key, App Secret and the Permission type shown in the confirmation page: 
 
 # App key: 

★入力していく

# App key: ***************
# App secret: *****************
# Permission type, App folder or Full Dropbox [a/f]: a

> App key is ***************, App secret is ***************** and Access level is App Folder. Looks ok? [y/n]: y

> Token request... OK
 
 Please open the following URL in your browser, and allow Dropbox Uploader
 to access your DropBox folder:
 
 --> https://www.dropbox.com/1/oauth/authorize?oauth_token=*************
 
Press enter when done...

````

- 設定した情報は下記コマンドにて確認できる。

````コマンド
$ cd ~
$ sudo view .dropbox_uploader
````

## 5.ファイルをアップロードする

````コマンド
$ dropbox_uploader.sh upload [ローカルの元ファイル] [アップロードするファイル名]
````


-

# 動作確認

正常にuploadできたことを確認。

````ログ
User-MBA:Desktop User$ date;dropbox_uploader.sh upload /Users/User/Desktop/BIRIGAL.m4v /000_Private/001_Movie_mp4/002_Movies/BIRIGAL.m4v;date
2016年 6月22日 水曜日 00時43分05秒 JST
 > Uploading "/Users/User/Desktop/BIRIGAL.m4v" to "/000_Private/001_Movie_mp4/002_Movies/BIRIGAL.m4v"...................................................................................................................................................................................................... DONE
2016年 6月22日 水曜日 01時25分33秒 JST
User-MBA:Desktop User$ 
User-MBA:Desktop User$ 
````

-

# 今回使用したscriptのオプションコマンド

今回は、`upload`オプションを使用して実機検証を行いましたが、
これら以外にもオプションとして各コマンド操作ができるようです。

下記、対応している操作。

	１）upload
	２）download
	３）delete
	４）move
	５）copy
	６）mkdir
	７）list
	８）share
	９）info
	１０）unlink



それぞれの操作方法について、下記にまとめていきます。

## １）upload

ローカルフォルダーを指定してリモートフォルダー上にファイルをアップロードできる。
ワイルドカードの拡張をサポートしている。

````コマンド
$ dropbox_uploader.sh upload <LOCAL_FILE/DIR ...> <REMOTE_FILE/DIR>
````

````実行例
User-MBA:dropbox_test User$ dropbox_uploader.sh upload ./*.txt /test/
 > Uploading "./test001.txt" to "/test/test001.txt"... DONE
 > Uploading "./test002.txt" to "/test/test002.txt"... DONE
 > Uploading "./test003.txt" to "/test/test003.txt"... DONE
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test/
 > Listing "/test/"... DONE
 [F] 48 test001.txt
 [F] 48 test002.txt
 [F] 48 test003.txt
User-MBA:dropbox_test User$ 
````

## ２）download

リモートフォルダ上のファイルをダウンロードできる。
ローカルフォルダを指定しない場合は、カレント上にダウンロードされる。

````コマンド
$ dropbox_uploader.sh download <REMOTE_FILE/DIR> <LOCAL_FILE/DIR>
````


````実行例
User-MBA:dropbox_test User$ dropbox_uploader.sh download /test/test001.txt
 > Downloading "/test/test001.txt" to "test001.txt"... DONE
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ ll
total 8
-rw-------  1 User  staff  48  6 22 13:39 test001.txt
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh download /test/test002.txt
 > Downloading "/test/test002.txt" to "test002.txt"... DONE
User-MBA:dropbox_test User$ dropbox_uploader.sh download /test/test003.txt
 > Downloading "/test/test003.txt" to "test003.txt"... DONE
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ ll
total 24
-rw-------  1 User  staff  48  6 22 13:39 test001.txt
-rw-------  1 User  staff  48  6 22 13:39 test002.txt
-rw-------  1 User  staff  48  6 22 13:39 test003.txt
User-MBA:dropbox_test User$ 
````

## ３）delete

リモートフォルダ上のファイルを削除することができる。

````コマンド
$ dropbox_uploader.sh delete <REMOTE_FILE/DIR>
````

````実行例
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test/
 > Listing "/test/"... DONE
 [F] 48 test001.txt
 [F] 48 test002.txt
 [F] 48 test003.txt
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh delete /test/test001.txt
 > Deleting "/test/test001.txt"... DONE
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test/
 > Listing "/test/"... DONE
 [F] 48 test002.txt
 [F] 48 test003.txt
User-MBA:dropbox_test User$ 
````

## ４）move

リモートフォルダ上のファイルを移動またはリネームすることができる。

````コマンド
$ dropbox_uploader.sh move <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
````

````実行例
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test/
 > Listing "/test/"... DONE
 [F] 48 test002.txt
 [F] 48 test003.txt
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh move /test/test003.txt /test/test001.txt
 > Moving "/test/test003.txt" to "/test/test001.txt" ... DONE
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test/
 > Listing "/test/"... DONE
 [F] 48 test001.txt
 [F] 48 test002.txt
User-MBA:dropbox_test User$ 
````

## ５）copy

リモートフォルダ上のファイルをコピーすることができる。

````コマンド
$ dropbox_uploader.sh copy <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
````

````実行例
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test/
 > Listing "/test/"... DONE
 [D] 0  test20160623
 [F] 48 test001.txt
 [F] 48 test002.txt
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh copy /test/test001.txt /test/test`date +%Y%m%d`/
 > Copying "/test/test001.txt" to "/test/test20160623/test001.txt" ... DONE
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test/test`date +%Y%m%d`
 > Listing "/test/test20160623"... DONE
 [F] 48 test001.txt
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh copy /test/test`date +%Y%m%d`/ /test/sample
 > Copying "/test/test20160623/" to "/test/sample" ... DONE
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test
 > Listing "/test"... DONE
 [D] 0  sample
 [D] 0  test20160623
 [F] 48 test001.txt
 [F] 48 test002.txt
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test/sample
 > Listing "/test/sample"... DONE
 [F] 48 test001.txt
User-MBA:dropbox_test User$ 
````



## ６）mkdir

リモートフォルダ上にディレクトリを作成できる。

````コマンド
$ dropbox_uploader.sh mkdir <REMOTE_DIR>
````

````実行例
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test/
 > Listing "/test/"... DONE
 [F] 48 test001.txt
 [F] 48 test002.txt
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh mkdir /test/test`date +%Y%m%d`
 > Creating Directory "/test/test20160623"... DONE
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test/
 > Listing "/test/"... DONE
 [D] 0  test20160623
 [F] 48 test001.txt
 [F] 48 test002.txt
User-MBA:dropbox_test User$ 
````





## ７）list

リモートフォルダ上のディレクトリおよびファイルをリスト表示することができる。
但し、日本語は文字化けしてしまうので注意が必要。

````コマンド
$ dropbox_uploader.sh list [REMOTE_DIR]
````

````実行例
User-MBA:Desktop User$ dropbox_uploader.sh list /test
 > Listing "/test"... DONE
 [F] 48 test_aaaa.txt
User-MBA:Desktop User$ 
````


## ８）share

ファイルまたはフォルダを共有するためのリンクパスを取得することができる。

````コマンド
$ dropbox_uploader.sh share <REMOTE_FILE>
````

````実行例
User-MBA:dropbox_test User$ dropbox_uploader.sh share /test/test`date +%Y%m%d`/
 > Share link: https://db.tt/5WVVzz5M
User-MBA:dropbox_test User$ 
````

![kobito.1466662882.864616.png](https://qiita-image-store.s3.amazonaws.com/0/33479/ad7d0a05-e9f3-9dec-5220-f9120ac89079.png "kobito.1466662882.864616.png")

また、指定したURL先から直接リモートフォルダへの保存をすることができる。

````コマンド
$ dropbox_uploader.sh saveurl <URL> <REMOTE_DIR>
````

````実行例
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test
 > Listing "/test"... DONE
 [D] 0  sample
 [D] 0  test20160623
 [F] 48 test001.txt
 [F] 48 test002.txt
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh saveurl http://docs.aws.amazon.com/gettingstarted/latest/awsgsg-intro/awsgsg-intro.pdf /test/
 > Downloading "http://docs.aws.amazon.com/gettingstarted/latest/awsgsg-intro/awsgsg-intro.pdf" to "/test/"...++ DONE
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ 
User-MBA:dropbox_test User$ dropbox_uploader.sh list /test
 > Listing "/test"... DONE
 [D] 0      sample
 [D] 0      test20160623
 [F] 253338 awsgsg-intro.pdf
 [F] 48     test001.txt
 [F] 48     test002.txt
User-MBA:dropbox_test User$ 
````



## ９）info

Dropboxのアカウント情報を表示することができる。

````コマンド
$ dropbox_uploader.sh info
````

````実行例
User-MBA:dropbox_test User$ dropbox_uploader.sh info
Dropbox Uploader v0.16

 > Getting info... 

Name:	Daisuke Miura
UID:	341027231
Email:	dmiura1112+dropbox@gmail.com
Quota:	1050880 Mb
Used:	10168 Mb
Free:	1040711 Mb

User-MBA:dropbox_test User$
````

## １０）unlink

scriptをDropboxとのリレーションを解除する。
基本使用しなくなる場合などに実行する。

````コマンド
$ dropbox_uploader.sh unlink
````












````ログ


Last login: Sat Jun 18 12:38:16 on ttys000
User-MBA:~ User$ 
User-MBA:~ User$ 
User-MBA:~ User$ 
User-MBA:~ User$ ll /tmp
lrwxr-xr-x@ 1 root  wheel  11  1 14 13:38 /tmp -> private/tmp
User-MBA:~ User$ 
User-MBA:~ User$ 
User-MBA:~ User$ 
User-MBA:~ User$ cd /tmp
User-MBA:tmp User$ sudo git clone https://github.com/andreafabrizi/Dropbox-Uploader/
Password:
Cloning into 'Dropbox-Uploader'...
remote: Counting objects: 728, done.
remote: Total 728 (delta 0), reused 0 (delta 0), pack-reused 728
Receiving objects: 100% (728/728), 220.80 KiB | 159.00 KiB/s, done.
Resolving deltas: 100% (374/374), done.
Checking connectivity... done.
User-MBA:tmp User$ 
User-MBA:tmp User$ 
User-MBA:tmp User$ ll /tmp
lrwxr-xr-x@ 1 root  wheel  11  1 14 13:38 /tmp -> private/tmp
User-MBA:tmp User$ 
User-MBA:tmp User$ ll /tmp/
total 4056
drwxr-xr-x  8 root          wheel      272  6 22 00:22 Dropbox-Uploader
drwx------  3 root          wheel      102  6 21 23:26 KSOutOfProcessFetcher.0.ppfIhqX0vjaTSb8AJYobDV7Cu68=
drwx------  3 User         wheel      102  6 21 23:26 KSOutOfProcessFetcher.501.ppfIhqX0vjaTSb8AJYobDV7Cu68=
drwx------  3 _mbsetupuser  wheel      102  6  3 23:01 com.apple.launchd.DL8yblRUFo
drwx------  3 _mbsetupuser  wheel      102  6  3 23:01 com.apple.launchd.IB63xhXORU
drwx------  3 User         wheel      102  6  3 23:01 com.apple.launchd.WCCY8K3bRP
drwx------  3 User         wheel      102  6  3 23:01 com.apple.launchd.cVJFcOxwMM
drwx------  3 User         wheel      102  6  3 23:01 com.apple.launchd.k3dnnONwWJ
drwx------  3 _mbsetupuser  wheel      102  6  3 23:01 com.apple.launchd.kgXsmC7faf
-rw-r--r--  1 root          wheel       96  6 16 21:36 wifi-2miIoP.log
-rw-r--r--  1 root          wheel       96  6 16 21:36 wifi-JM6rTJ.log
-rw-r--r--  1 root          wheel  2048000  6 16 21:36 wifi-MV37Fl.log
-rw-r--r--  1 root          wheel       96  6 16 21:36 wifi-Qjrla1.log
-rw-r--r--  1 root          wheel       96  6 16 21:36 wifi-kI84WO.log
-rw-r--r--  1 root          wheel      440  6 16 21:36 wifi-lTaP5x.log
-rw-r--r--  1 root          wheel       96  6 16 21:36 wifi-ogBdYM.log
-rw-r--r--  1 root          wheel       96  6 16 21:36 wifi-wQuwsU.log
User-MBA:tmp User$ 
User-MBA:tmp User$ 
User-MBA:tmp User$ cd Dropbox-Uploader
User-MBA:Dropbox-Uploader User$ ll
total 208
-rw-r--r--  1 root  wheel   7824  6 22 00:22 CHANGELOG.md
-rw-r--r--  1 root  wheel  35147  6 22 00:22 LICENSE
-rw-r--r--  1 root  wheel   7296  6 22 00:22 README.md
-rwxr-xr-x  1 root  wheel   8649  6 22 00:22 dropShell.sh
-rwxr-xr-x  1 root  wheel  40892  6 22 00:22 dropbox_uploader.sh
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ sudo chmod 755 dropbox_uploader.sh
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ ll
total 208
-rw-r--r--  1 root  wheel   7824  6 22 00:22 CHANGELOG.md
-rw-r--r--  1 root  wheel  35147  6 22 00:22 LICENSE
-rw-r--r--  1 root  wheel   7296  6 22 00:22 README.md
-rwxr-xr-x  1 root  wheel   8649  6 22 00:22 dropShell.sh
-rwxr-xr-x  1 root  wheel  40892  6 22 00:22 dropbox_uploader.sh
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ sudo mv /tmp/Dropbox-Uploader/dropbox_uploader.sh /usr/local/bin/
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ ll
total 128
-rw-r--r--  1 root  wheel   7824  6 22 00:22 CHANGELOG.md
-rw-r--r--  1 root  wheel  35147  6 22 00:22 LICENSE
-rw-r--r--  1 root  wheel   7296  6 22 00:22 README.md
-rwxr-xr-x  1 root  wheel   8649  6 22 00:22 dropShell.sh
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ 
User-MBA:Dropbox-Uploader User$ cd /usr/local/bin/
User-MBA:bin User$ ll
total 1120
-rwxr-xr-x  1 User  admin     656  4 23 23:40 brew
lrwxr-xr-x  1 User  admin      37  4 23 23:42 c_rehash -> ../Cellar/openssl/1.0.2g/bin/c_rehash
-rwxr-xr-x  1 root   wheel   40892  6 22 00:22 dropbox_uploader.sh
lrwxr-xr-x  1 User  admin      36  4 23 23:42 openssl -> ../Cellar/openssl/1.0.2g/bin/openssl
-rwxr-xr-x  1 root   admin  518956  4 23 23:46 wget
User-MBA:bin User$ ./dropbox_uploader.sh

 This is the first time you run this script.

 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. MyUploader22234335311198)

 Now, click on the "Create App" button.

 When your new App is successfully created, please type the
 App Key, App Secret and the Permission type shown in the confirmation page:

 # App key: 4r7l1cmorjvl22r
 # App secret: ozufofb9bwi33rw

Permission type:
 App folder [a]: If you choose that the app only needs access to files it creates
 Full Dropbox [f]: If you choose that the app needs access to files already on Dropbox

 # Permission type [a/f]: f

 > App key is 4r7l1cmorjvl22r, App secret is ozufofb9bwi33rw and Access level is Full Dropbox. Looks ok? [y/n]: y

 > Token request... OK

 Please open the following URL in your browser, and allow Dropbox Uploader
 to access your DropBox folder:

 --> https://www.dropbox.com/1/oauth/authorize?oauth_token=BMSEHqn98sqpx2GP

Press enter when done...

 > Access Token request... OK

 Setup completed!
User-MBA:bin User$ 
User-MBA:bin User$ 
User-MBA:bin User$ 
User-MBA:bin User$ 

````