{"id":13536439,"url":"https://github.com/andreafabrizi/Dropbox-Uploader","last_synced_at":"2025-04-02T03:30:44.688Z","repository":{"id":40652269,"uuid":"2339961","full_name":"andreafabrizi/Dropbox-Uploader","owner":"andreafabrizi","description":"Dropbox Uploader is a BASH script which can be used to upload, download, list or delete files from Dropbox, an online file sharing, synchronization and backup service.","archived":false,"fork":false,"pushed_at":"2024-06-04T07:54:29.000Z","size":381,"stargazers_count":6582,"open_issues_count":159,"forks_count":1074,"subscribers_count":273,"default_branch":"master","last_synced_at":"2025-04-02T01:11:52.085Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.andreafabrizi.it/2016/01/01/Dropbox-Uploader/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andreafabrizi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2011-09-07T07:00:50.000Z","updated_at":"2025-03-26T23:43:18.000Z","dependencies_parsed_at":"2023-01-19T20:43:27.146Z","dependency_job_id":"35cd2911-f250-4cca-b33c-105f65e59db6","html_url":"https://github.com/andreafabrizi/Dropbox-Uploader","commit_stats":{"total_commits":299,"total_committers":44,"mean_commits":6.795454545454546,"dds":"0.20401337792642138","last_synced_commit":"11fb8f736064730dd21ff85d68dfcc8aacfdf559"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreafabrizi%2FDropbox-Uploader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreafabrizi%2FDropbox-Uploader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreafabrizi%2FDropbox-Uploader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreafabrizi%2FDropbox-Uploader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreafabrizi","download_url":"https://codeload.github.com/andreafabrizi/Dropbox-Uploader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246750849,"owners_count":20827790,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T09:00:39.390Z","updated_at":"2025-04-02T03:30:44.668Z","avatar_url":"https://github.com/andreafabrizi.png","language":"Shell","readme":"# Dropbox Uploader\n\nDropbox 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. \n\nIt's written in BASH scripting language and only needs **cURL**.\n\nYou can take a look to the [GitHub project page](https://github.com/andreafabrizi/Dropbox-Uploader).\n\n**Why use this script?**\n\n* **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).\n* **Secure:** It's not required to provide your username/password to this script, because it uses the official Dropbox API v2 for the authentication process. \n\nPlease 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.\n\n## Features\n\n* Cross platform\n* Support for the official Dropbox API v2\n* No password required or stored\n* Simple step-by-step configuration wizard\n* Simple and chunked file upload\n* File and recursive directory download\n* File and recursive directory upload\n* Shell wildcard expansion (only for upload)\n* Delete/Move/Rename/Copy/List/Share files\n* Create share link\n* Monitor for changes\n\n## Getting started\n\nFirst, clone the repository using git (recommended):\n\n```bash\ngit clone https://github.com/andreafabrizi/Dropbox-Uploader.git\n```\n\nor download the script manually using this command:\n\n```bash\ncurl \"https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh\" -o dropbox_uploader.sh\n```\n\nThen give the execution permission to the script and run it:\n\n```bash\n $chmod +x dropbox_uploader.sh\n $./dropbox_uploader.sh\n```\n\nThe 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 `~/.dropbox_uploader`.\n\n## Usage\n\nThe syntax is quite simple:\n\n```\n./dropbox_uploader.sh [PARAMETERS] COMMAND...\n\n[%%]: Optional param\n\u003c%%\u003e: Required param\n```\n\n**Available commands:**\n\n* **upload** \u0026lt;LOCAL_FILE/DIR ...\u0026gt; \u0026lt;REMOTE_FILE/DIR\u0026gt;  \nUpload a local file or directory to a remote Dropbox folder.  \nIf the file is bigger than 150Mb the file is uploaded using small chunks (default 50Mb); \nin this case a . (dot) is printed for every chunk successfully uploaded and a * (star) if an error \noccurs (the upload is retried for a maximum of three times).\nOnly if the file is smaller than 150Mb, the standard upload API is used, and if the -p option is specified\nthe default curl progress bar is displayed during the upload process.  \nThe local file/dir parameter supports wildcards expansion.\n\n* **download** \u0026lt;REMOTE_FILE/DIR\u0026gt; [LOCAL_FILE/DIR]  \nDownload file or directory from Dropbox to a local folder\n\n* **delete** \u0026lt;REMOTE_FILE/DIR\u0026gt;  \nRemove a remote file or directory from Dropbox\n\n* **move** \u0026lt;REMOTE_FILE/DIR\u0026gt; \u0026lt;REMOTE_FILE/DIR\u0026gt;  \nMove or rename a remote file or directory\n\n* **copy** \u0026lt;REMOTE_FILE/DIR\u0026gt; \u0026lt;REMOTE_FILE/DIR\u0026gt;  \nCopy a remote file or directory\n\n* **mkdir** \u0026lt;REMOTE_DIR\u0026gt;  \nCreate a remote directory on Dropbox\n\n* **list** [REMOTE_DIR]  \nList the contents of the remote Dropbox folder\n\n* **monitor** [REMOTE_DIR] [TIMEOUT]  \nMonitor the remote Dropbox folder for changes. If timeout is specified, at the first change event the function will return.\n\n* **share** \u0026lt;REMOTE_FILE\u0026gt;  \nGet a public share link for the specified file or directory\n\n* **saveurl** \u0026lt;URL\u0026gt; \u0026lt;REMOTE_DIR\u0026gt;  \nDownload a file from an URL to a Dropbox folder directly (the file is NOT downloaded locally)\n\n* **search** \u0026lt;QUERY\u0026gt;\nSearch for a specific pattern on Dropbox and returns the list of matching files or directories\n\n* **info**  \nPrint some info about your Dropbox account\n\n* **space**\nPrint some info about the space usage on your Dropbox account\n\n* **unlink**  \nUnlink the script from your Dropbox account\n\n\n**Optional parameters:**  \n* **-f \u0026lt;FILENAME\u0026gt;**  \nLoad the configuration file from a specific file\n\n* **-s**  \nSkip already existing files when download/upload. Default: Overwrite\n\n* **-d**  \nEnable DEBUG mode\n\n* **-q**  \nQuiet mode. Don't show progress meter or messages\n\n* **-h**  \nShow file sizes in human readable format\n\n* **-p**  \nShow cURL progress meter\n\n* **-k**  \nDoesn't check for SSL certificates (insecure)\n\n* **-x \u0026lt;FILENAME\u0026gt;**  \nIgnores/excludes directories or files from syncing.\n-x filename -x directoryname. \n\n**Examples:**\n```bash\n    ./dropbox_uploader.sh upload /etc/passwd /myfiles/passwd.old\n    ./dropbox_uploader.sh upload *.zip /\n    ./dropbox_uploader.sh -x .git upload ./project /\n    ./dropbox_uploader.sh download /backup.zip\n    ./dropbox_uploader.sh delete /backup.zip\n    ./dropbox_uploader.sh mkdir /myDir/\n    ./dropbox_uploader.sh upload \"My File.txt\" \"My File 2.txt\"\n    ./dropbox_uploader.sh share \"My File.txt\"\n    ./dropbox_uploader.sh list\n```\n\n## Tested Environments\n\n* GNU Linux\n* FreeBSD 8.3/10.0\n* MacOSX\n* Windows/Cygwin\n* Raspberry Pi\n* QNAP\n* iOS\n* OpenWRT\n* Chrome OS\n* OpenBSD\n* Termux\n\nIf you have successfully tested this script on others systems or platforms please let me know!\n\n## Running as cron job\nDropbox Uploader relies on a different configuration file for each system user. The default configuration file location is `$HOME/.dropbox_uploader`. This means that if you setup the script with your user and then you try to run a cron job as root, it won't work.\nSo, when running this script using cron, please keep in mind the following:\n* Remember to setup the script with the user used to run the cron job\n* Always specify the full script path when running it (e.g.  /path/to/dropbox_uploader.sh)\n* 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 (e.g. -f /home/youruser/.dropbox_uploader)\n* My advice is, for security reasons, to not share the same configuration file with different users\n\n## How to setup a proxy\n\nTo use a proxy server, just set the **https_proxy** environment variable:\n\n**Linux:**\n```bash\n    export HTTP_PROXY_USER=XXXX\n    export HTTP_PROXY_PASSWORD=YYYY\n    export https_proxy=http://192.168.0.1:8080\n```\n\n**BSD:**\n```bash\n    setenv HTTP_PROXY_USER XXXX\n    setenv HTTP_PROXY_PASSWORD YYYY\n    setenv https_proxy http://192.168.0.1:8080\n```\n   \n## BASH and Curl installation\n\n**Debian \u0026 Ubuntu Linux:**\n```bash\n    sudo apt-get install bash (Probably BASH is already installed on your system)\n    sudo apt-get install curl\n```\n\n**BSD:**\n```bash\n    cd /usr/ports/shells/bash \u0026\u0026 make install clean\n    cd /usr/ports/ftp/curl \u0026\u0026 make install clean\n```\n\n**Cygwin:**  \nYou need to install these packages:  \n* curl\n* ca-certificates\n* dos2unix\n\nBefore running the script, you need to convert it using the dos2unix command.\n\n\n**Build cURL from source:**\n* Download the source tarball from http://curl.haxx.se/download.html\n* Follow the INSTALL instructions\n\n## DropShell\n\nDropShell is an interactive DropBox shell, based on DropBox Uploader:\n\n```bash\nDropShell v0.2\nThe Intractive Dropbox SHELL\nAndrea Fabrizi - andrea.fabrizi@gmail.com\n\nType help for the list of the available commands.\n\nandrea@Dropbox:/$ ls\n [D] 0       Apps\n [D] 0       Camera Uploads\n [D] 0       Public\n [D] 0       scripts\n [D] 0       Security\n [F] 105843  notes.txt\nandrea@DropBox:/ServerBackup$ get notes.txt\n```\n\n## Running as Docker Container\nFirst build the docker image:\n```bash\ndocker build https://github.com/sircuri/Dropbox-Uploader.git -f Dockerfile -t \u003cTAG\u003e\n```\nor for RaspBerry:\n```bash\ndocker build https://github.com/sircuri/Dropbox-Uploader.git -f Dockerfile.pi -t \u003cTAG\u003e\n```\nthen, you can run it as following:\n```bash\ndocker run -i --rm --user=$(id -u):$(id -g) -v \u003cLOCAL_CONFIG_PATH\u003e:/config -v \u003cYOUR_DATA_DIR_MOUNT\u003e:/workdir \u003cTAG\u003e \u003cArguments\u003e \n```\nThis will store the auth token information in the given local directory in `\u003cLOCAL_CONFIG_PATH\u003e`. To ensure access to your mounted directories it can be important to pass a UID and GID to the docker deamon (as stated in the example by the --user argument)\n\nUsing the script with docker makes it also possible to run the script even on windows machines.\n\nTo use a proxy, just set the mentioned environment variables via the docker `-e` parameter.\n\n## Related projects\n[thunar-dropbox](https://github.com/mDfRg/Thunar-Dropbox-Uploader-plugin/tree/thunar-dropbox/plugins/thunar): A simple extension to Dropbox Uploader that provides a convenient method to share your Dropbox files with one click!\n\n## Upgrading from old dropbox API\nStarting September 30th, 2021, Dropbox is updating their API (OAuth scopes, PKCE, refresh tokens, and short-lived access tokens)\ndropbox_uploader.sh configurations made with the old API will not longer work after that date.\nReconfigure dropbox_uploader.sh:\n*  Go to https://www.dropbox.com/account/connected_apps, expand your configuration, and click the button 'Disconnect'\n*  Rename or delete your configuration file .dropbox_uploader\n\n## Donations\n\n If you want to support this project, please consider donating:\n * PayPal: https://paypal.me/AndreaF83\n * BTC: 1JHCGAMpKqUwBjcT3Kno9Wd5z16K6WKPqG\n","funding_links":["https://paypal.me/AndreaF83"],"categories":["Downloading and Serving","Shell","HarmonyOS","Applications"],"sub_categories":["Directory Navigation","Windows Manager","Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreafabrizi%2FDropbox-Uploader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreafabrizi%2FDropbox-Uploader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreafabrizi%2FDropbox-Uploader/lists"}