Dropbox Uploader is a BASH script which can be used to upload, download, delete, list files (and more!) from Dropbox, an online file sharing, synchronization and backup service.
It's written in BASH scripting language and only needs cURL.
Why use this script?
- Portable: It's written in BASH scripting and only needs cURL (curl is a tool to transfer data from or to a server, available for all operating systems and installed by default in many linux distributions).
- Secure: It's not required to provide your username/password to this script, because it uses the official Dropbox API for the authentication process.
Please refer to the <Wiki>(https://github.com/andreafabrizi/Dropbox-Uploader/wiki) for tips and additional information about this project. The Wiki is also the place where you can share your scripts and examples related to Dropbox Uploader.
- Cross platform
- Support for the official Dropbox API
- No password required or stored
- Simple step-by-step configuration wizard
- Simple and chunked file upload
- File and recursive directory download
- File and recursive directory upload
- Shell wildcard expansion (only for upload)
- Delete/Move/Rename/Copy/List files
- Create share link
First, clone the repository using git (recommended):
git clone https://github.com/andreafabrizi/Dropbox-Uploader/
or download the script manually using this command:
curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
Then give the execution permission to the script and run it:
$chmod +x dropbox_uploader.sh $./dropbox_uploader.sh
The first time you run
dropbox_uploader, you'll be guided through a wizard in order to configure access to your Dropbox. This configuration will be stored in
The configuration wizard is pretty self-explanatory. One thing to notice is that if you choose "App permission", your uploads will end up on Dropbox under an
App/<your_app_name> folder. To have them stored in another folder, such as in
/dir/, you'll need to give Dropbox-Uploader permission to all Dropbox files.
The syntax is quite simple:
./dropbox_uploader.sh COMMAND [PARAMETERS]... [%%]: Optional param <%%>: Required param
upload <LOCAL_FILE/DIR ...> <REMOTE_FILE/DIR>
Upload a local file or directory to a remote Dropbox folder.
If the file is bigger than 150Mb the file is uploaded using small chunks (default 4Mb); in this case a . (dot) is printed for every chunk successfully uploaded and a * (star) if an error occurs (the upload is retried for a maximum of three times). Only if the file is smaller than 150Mb, the standard upload API is used, and if the -p option is used the default curl progress bar is displayed during the upload process.
The local file/dir parameter supports wildcards expansion.
download <REMOTE_FILE/DIR> [LOCAL_FILE/DIR]
Download file or directory from Dropbox to a local folder
Remove a remote file or directory from Dropbox
move <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
Move or rename a remote file or directory
copy <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
Copy a remote file or directory
Create a remote directory on DropBox
List the contents of the remote Dropbox folder
Get a public share link for the specified file or directory
saveurl <URL> <REMOTE_DIR>
Download a file from an URL to a Dropbox folder directly (the file is NOT downloaded locally)
Print some info about your Dropbox account
Unlink the script from your Dropbox account
Load the configuration file from a specific file
Skip already existing files when download/upload. Default: Overwrite
Enable DEBUG mode
Quiet mode. Don't show progress meter or messages
Show cURL progress meter
Doesn't check for SSL certificates (insecure)
./dropbox_uploader.sh upload /etc/passwd /myfiles/passwd.old ./dropbox_uploader.sh upload *.zip / ./dropbox_uploader.sh download /backup.zip ./dropbox_uploader.sh delete /backup.zip ./dropbox_uploader.sh mkdir /myDir/ ./dropbox_uploader.sh upload "My File.txt" "My File 2.txt" ./dropbox_uploader.sh share "My File.txt" ./dropbox_uploader.sh list
- GNU Linux
- FreeBSD 8.3/10.0
- Raspberry Pi
- Chrome OS
If you have successfully tested this script on others systems or platforms please let me know!
Running as cron job
Dropbox Uploader relies on a different configuration file for each system user. The default configuration file location is HOME_DIRECTORY/.dropbox_uploader. This means that if you do the setup with your user and then you try to run a cron job as root, it won't works.
So, when running this script using cron, please keep in mind the following:
- Remember to setup the script with the user used to run the cron job
- Use always the -f option to specify the full configuration file path, because sometimes in the cron environment the home folder path is not detected correctly
- My advice is, for security reasons, to not share the same configuration file with different users
How to setup a proxy
To use a proxy server, just set the https_proxy environment variable:
export HTTP_PROXY_USER=XXXX export HTTP_PROXY_PASSWORD=YYYY export https_proxy=http://192.168.0.1:8080
setenv HTTP_PROXY_USER XXXX setenv HTTP_PROXY_PASSWORD YYYY setenv https_proxy http://192.168.0.1:8080
BASH and Curl installation
Debian & Ubuntu Linux:
sudo apt-get install bash (Probably BASH is already installed on your system) sudo apt-get install curl
cd /usr/ports/shells/bash && make install clean cd /usr/ports/ftp/curl && make install clean
You need to install these packages:
Before running the script, you need to convert it using the dos2unix command.
Build cURL from source:
- Download the source tarball from http://curl.haxx.se/download.html
- Follow the INSTALL instructions
DropShell is an interactive DropBox shell, based on DropBox Uploader:
DropShell v0.2 The Intractive Dropbox SHELL Andrea Fabrizi - firstname.lastname@example.org Type help for the list of the available commands. andrea@Dropbox:/$ ls [D] 0 Apps [D] 0 Camera Uploads [D] 0 Public [D] 0 scripts [D] 0 Security [F] 105843 notes.txt andrea@DropBox:/ServerBackup$ get notes.txt
If you want to support this project, please consider donating:
- PayPal: email@example.com
- BTC: 1JHCGAMpKqUwBjcT3Kno9Wd5z16K6WKPqG