The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Build Status

NAME

App::dropboxapi - command line interface to access Dropbox API

SYNOPSIS

dropbox-api put /tmp/foo.txt dropbox:/Public/

Run dropbox-api help for more options.

DESCRIPTION

dropbox-api is a command line interface to access Dropbox API.

Install and Setup

1. Install

1-a) FreeBSD

pkg_add -r dropbox-api-command

1-b) Ubuntu

sudo apt-get install make gcc libssl-dev wget wget https://raw.github.com/miyagawa/cpanminus/master/cpanm sudo perl cpanm App::dropboxapi

1-c) CentOS

```

CentOS 5

sudo yum install gcc gcc-c++ openssl-devel wget

CentOS 6

sudo yum install gcc gcc-c++ openssl-devel wget perl-devel wget https://raw.github.com/miyagawa/cpanminus/master/cpanm sudo perl cpanm App::dropboxapi ```

1-d) OS X

```

Install Command Line Tools for Xcode

open https://www.google.com/search?q=Command+Line+Tools+for+Xcode

curl -O https://raw.github.com/miyagawa/cpanminus/master/cpanm sudo perl cpanm App::dropboxapi ```

2. Get API Key and API Secret

perl https://www.dropbox.com/developers My Apps => Create an App

3. Get Access Token and Access Secret

```

dropbox-api setup Please Input API Key: Please Input API Secret: 1. Open the Login URL: https://www.dropbox.com/oauth2/authorize?client_id=&response_type=code 2. Input code and press Enter: ** success! try dropbox-api ls dropbox-api find / ```

4. How to use Proxy

Please use -e option.

```

HTTP_PROXY="http://127.0.0.1:8888" dropbox-api setup -e ```

Sub Commands

help

disp help.

Example

```perl

dropbox-api help Usage: dropbox-api [args] [options]

Available commands: setup get access_key and access_secret ls list directory contents find walk a file hierarchy du disk usage statistics cp copy file or directory mv move file or directory mkdir make directory (Create intermediate directories as required) rm remove file or directory (Attempt to remove the file hierarchy rooted in each file argument) put upload file get download file sync sync directory (local => dropbox or dropbox => local)

Common Options -e enable env_proxy ( HTTP_PROXY, NO_PROXY ) -D enable debug -v verbose -s sandbox mode, but this option has been removed.

See 'dropbox-api help ' for more information on a specific command. ```

Example ( command help )

```

dropbox-api help ls Name dropbox-api-ls - list directory contents

SYNOPSIS dropbox-api ls [options]

Example dropbox-api ls Public dropbox-api ls Public -h dropbox-api ls Public -p "%d\t%s\t%TY/%Tm/%Td %TH:%TM:%TS\t%p\n"

Options -h print sizes in human readable format (e.g., 1K 234M 2G) -p print format. %d ... is_dir ( d: dir, -: file ) %i ... id %n ... name %p ... path_display %P ... path_lower %b ... bytes %s ... size (e.g., 1K 234M 2G) %t ... server_modified %c ... client_modified %r ... rev %Tk ... DateTime 'strftime' function (server_modified) %Ck ... DateTime 'strftime' function (client_modified) ```

http://search.cpan.org/dist/DateTime/lib/DateTime.pm#strftime_Patterns

ls

file list view.

Example

```

dropbox-api list /product d - Thu, 24 Feb 2011 06:58:00 +0000 /product/chrome-extentions - 294557 Sun, 26 Dec 2010 21:55:59 +0000 /product/ex.zip ```

human readable option ( -h )

print sizes in human readable format (e.g., 1K 234M 2G)

```

dropbox-api ls /product -h d - Thu, 24 Feb 2011 06:58:00 +0000 /product/chrome-extentions - 287.7KB Sun, 26 Dec 2010 21:55:59 +0000 /product/ex.zip ```

printf option ( -p )

print format.

```

dropbox-api ls /product -p "%d\t%s\t%TY/%Tm/%Td %TH:%TM:%TS\t%p\n" d - 2011/02/24 06:58:00 /product/chrome-extentions - 287.7KB 2010/12/26 21:55:59 /product/ex.zip

%d ... is_dir ( d: dir, -: file )
%i ... id
%n ... name
%p ... path_display
%P ... path_lower
%b ... bytes
%s ... size (e.g., 1K 234M 2G)
%t ... server_modified
%c ... client_modified
%r ... rev
%Tk ... DateTime 'strftime' function (server_modified)
%Ck ... DateTime 'strftime' function (client_modified)

```

http://search.cpan.org/dist/DateTime/lib/DateTime.pm#strftime_Patterns

find

recursive file list view.

Example

```

dropbox-api find /product/google-tasks-checker-plus /product/chrome-extentions/google-tasks-checker-plus/README.md /product/chrome-extentions/google-tasks-checker-plus/src /product/chrome-extentions/google-tasks-checker-plus/src/background.html /product/chrome-extentions/google-tasks-checker-plus/src/external.png /product/chrome-extentions/google-tasks-checker-plus/src/icon-32.png /product/chrome-extentions/google-tasks-checker-plus/src/icon-128.png /product/chrome-extentions/google-tasks-checker-plus/src/icon.gif /product/chrome-extentions/google-tasks-checker-plus/src/jquery-1.4.2.min.js /product/chrome-extentions/google-tasks-checker-plus/src/main.js /product/chrome-extentions/google-tasks-checker-plus/src/manifest.json /product/chrome-extentions/google-tasks-checker-plus/src/options.html /product/chrome-extentions/google-tasks-checker-plus/src/popup.html /product/chrome-extentions/google-tasks-checker-plus/src/reset.css ```

printf option ( -p )

see also list command's printf option.

du

display disk usage statistics.

Example

```

dropbox-api du /product -h -d 1 1.1M /product 1.1M /product/chrome-extensions 0B /product/work ```

human readable option ( -h )

print sizes in human readable format (e.g., 1K 234M 2G)

depth option ( -d )

Display an entry for all files and directories depth directories deep.

sync ( rsync )

recursive file synchronization.

sync from dropbox

dropbox-api sync dropbox:<source_dir> <target_dir> [options]

```

dropbox-api sync dropbox:/product/google-tasks-checker-plus/src /tmp/product download /private/tmp/product/external.png download /private/tmp/product/icon-32.png download /private/tmp/product/icon-128.png ```

sync to dropbox

dropbox-api sync <source_dir> dropbox:<target_dir> [options]

```

dropbox-api sync /tmp/product dropbox:/work/src upload background.html /work/src/background.html upload external.png /work/src/external.png upload icon-128.png /work/src/icon-128.png ```

delete option ( -d )

```

dropbox-api sync dropbox:/product/google-tasks-checker-plus/src /tmp/product -d download /private/tmp/product/external.png download /private/tmp/product/icon-32.png download /private/tmp/product/icon-128.png remove background.html.tmp ```

dry run option ( -n )

```

dropbox-api sync dropbox:/product/google-tasks-checker-plus/src /tmp/product -dn !! enable dry run !! download /private/tmp/product/external.png download /private/tmp/product/icon-32.png download /private/tmp/product/icon-128.png remove background.html.tmp ```

verbose option ( -v )

```

dropbox-api sync dropbox:/product/google-tasks-checker-plus/src /tmp/product -dnv remote_base: /product/chrome-extentions/google-tasks-checker-plus/src local_base: /private/tmp/product * download skip background.html download /private/tmp/product/external.png download /private/tmp/product/icon-32.png download /private/tmp/product/icon-128.png skip icon.gif skip jquery-1.4.2.min.js skip main.js skip manifest.json skip options.html skip popup.html skip reset.css delete * skip background.html remove background.html.tmp skip icon.gif skip jquery-1.4.2.min.js skip main.js skip manifest.json skip options.html skip popup.html skip reset.css ```

cp

copy file or directory.

Example

dropbox-api cp memo.txt memo.txt.bak

mv

move file or directory.

Example

dropbox-api mv memo.txt memo.txt.bak

mkdir

make directory.

*no error if existing, make parent directories as needed.*

Example

dropbox-api mkdir product/src

rm

remove file or directory.

*remove the contents of directories recursively.*

Example

dropbox-api rm product/src

get

download file from dropbox.

Example

dropbox-api get dropbox:/Public/foo.txt /tmp/foo.txt

put

upload file to dropbox.

Example

dropbox-api put /tmp/foo.txt dropbox:/Public/

verbose option ( -v )

A progress bar is displayed.

perl dropbox-api put /tmp/1GB.dat dropbox:/Public/ -v 100% [=====================================================================================>]

Tips

Retry

```

!/bin/bash

command='dropbox-api sync dropbox:/test/ /Users/aska/test/ -vde'

NEXT_WAIT_TIME=0 EXIT_CODE=0 until $command || [ $NEXT_WAIT_TIME -eq 4 ]; do EXIT_CODE=$? sleep $NEXT_WAIT_TIME let NEXT_WAIT_TIME=NEXT_WAIT_TIME+1 done exit $EXIT_CODE ```

COPYRIGHT

Copyright 2012- Shinichiro Aska

The standalone executable contains the following modules embedded.

LICENSE

Released under the MIT license. http://creativecommons.org/licenses/MIT/

COMMUNITY