{"id":15373887,"url":"https://github.com/boly38/drobadi","last_synced_at":"2025-12-26T02:35:44.878Z","repository":{"id":42014026,"uuid":"427037821","full_name":"boly38/drobadi","owner":"boly38","description":"Use NodeJS to zip a directory and create backup onto dropbox","archived":false,"fork":false,"pushed_at":"2024-09-09T18:37:41.000Z","size":434,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-23T11:22:31.477Z","etag":null,"topics":["backup","database","dropbox","hacktoberfest","nodejs","zip"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/boly38.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","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":"2021-11-11T14:50:09.000Z","updated_at":"2024-09-09T18:37:06.000Z","dependencies_parsed_at":"2024-04-10T08:25:28.757Z","dependency_job_id":"084131b8-ea81-428a-8327-4281b23013e3","html_url":"https://github.com/boly38/drobadi","commit_stats":{"total_commits":32,"total_committers":3,"mean_commits":"10.666666666666666","dds":0.4375,"last_synced_commit":"992f902e771173dca64ff3772ec55b266e45f2d5"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boly38%2Fdrobadi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boly38%2Fdrobadi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boly38%2Fdrobadi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boly38%2Fdrobadi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boly38","download_url":"https://codeload.github.com/boly38/drobadi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241073686,"owners_count":19905032,"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":["backup","database","dropbox","hacktoberfest","nodejs","zip"],"created_at":"2024-10-01T13:56:40.758Z","updated_at":"2025-12-26T02:35:44.869Z","avatar_url":"https://github.com/boly38.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# drobadi\r\n\r\nDropbox backup directory\r\n\r\nA Node.js tool to \r\n- zip a directory and create backup onto Dropbox, \r\n- list backups, \r\n- download a backup\r\n- or download and unzip a backup.\r\n\r\n[![NPM](https://nodei.co/npm/drobadi.png?compact=true)](https://npmjs.org/package/drobadi)\r\n\r\n\r\n## Command line usage\r\n\r\n### Setup\r\n**install drobadi**\r\n\r\n```\r\npnpm install drobadi@latest --global\r\n```\r\n\r\n**set your preferences**\r\n\r\nA dropbox application (`dropboxAppKey`,`dropboxAppSecret`), and long-lived refresh-token (`dropboxRefreshToken`) are required.\r\n\r\nNB: in order to understand how-to get a `refresh-token, cf [dropbox-refresh-token](https://github.com/boly38/dropbox-refresh-token)\r\n\r\nThe old-long-lived access-token (`dropboxToken`) are always supported but this method is deprecated and will be removed in futur release.\r\n\r\n```\r\ndrobadi setup\r\n```\r\n_(first time only) create a drobadi config file `~/.drobadi`_\r\n\r\nTo remove this setup\r\n```\r\ndrobadi unlink\r\n```\r\n\r\nNB: you could create other custom drobadi config files, and choose custom drobadi config file by using `DBD_CONFIG_FILE` env.\r\n\r\n### Show help\r\n- `drobadi`\r\n\r\n_show actions_\r\n\r\n### Create a backup\r\n- `drobadi backup \u003clocalDirectory\u003e [\u003cmyBackup.zip\u003e]`\r\n\r\n_create a remote zip backup from local directory_\r\n\r\nExample: zip local directory `../tmp/backup/myDir` then upload as dropbox backup `/backup/biolo.zip` \r\n```\r\ndrobadi backup ../tmp/backup/myDir biolo.zip\r\n```\r\n\r\nThis action will success if the target dropbox already exists with the same zip file.\r\n\r\nThis action will fail if a different target dropbox already exists (use `forceBackup` to override it).\r\n\r\n`backup` is the default dropbox backup target directory and may be changed using options.\r\n\r\n### Create or override a backup\r\n- `drobadi forceBackup \u003clocalDirectory\u003e [\u003cmyBackup.zip\u003e]`\r\n\r\n### List backups\r\n\r\n- `drobadi list`\r\n- `DBD_CONFIG_FILE=./tmp/myDrobadiConfig drobadi list`\r\n\r\n_list remote backups_\r\n\r\n\r\n### Download a backup\r\n\r\n- `drobadi download \u003cmyBackup.zip\u003e [\u003clocalFile.zip\u003e]`\r\n\r\n_download a remote backup into local file_\r\n\r\nExample: download dropbox file `/backup/biolo.zip` as local file `./biolo.zip`\r\n```\r\ndrobadi download biolo.zip\r\n```\r\n\r\nExample: download dropbox file `/backup/biolo.zip` as local file `/tmp/ddd.zip`\r\n```\r\ndrobadi download biolo.zip /tmp/ddd.zip\r\n```\r\n\r\n### Download and unzip a backup\r\n- `drobadi downloadAndUnzip \u003cmyBackup.zip\u003e [\u003c/local/path\u003e]`\r\n\r\n_download a remote backup and unzip it into local directory_\r\n\r\nExample: download dropbox file `/backup/biolo.zip` and unzip it into local directory `./biolo`\r\n```\r\ndrobadi downloadAndUnzip biolo.zip ./biolo\r\n```\r\n\r\n\r\n## DOptions\r\nDrobadi options are\r\n- `dropboxAppKey` (or `DBD_DROPBOX_APP_KEY` env. Default: `null`. **Required**) : [dropbox application](https://www.dropbox.com/developers/apps/) key.\r\n- `dropboxAppSecret` (or `DBD_DROPBOX_APP_SECRET` env. Default: `null`. **Required**) : dropbox application secret.\r\n- `dropboxRefreshToken` (or `DBD_DROPBOX_REFRESH_TOKEN`. Default: `null`.  env. **Required**) : dropbox application [refresh-token](https://github.com/boly38/dropbox-refresh-token).\r\n- `path` (or `DBD_PATH` env. Default: `backup`) : dropbox target directory that receive backup files.\r\n- `overrideTargetBackup` (or `DBD_OVERRIDE_TARGET_BACKUP` env. Default: `false`) : override target backup file.\r\n\r\nDeprecated option:\r\n- `dropboxToken` (or `DBD_DROPBOX_TOKEN` env. Default: `null`. **DEPRECATED**) : dropbox access-token value,\r\n- `dropboxTokenDisableWarning` (or `DBD_DROPBOX_TOKEN_DISABLE_WARNING` env. Default: `false`.*) : change-it to disable warning log.\r\n\r\nNote that `drobadi setup` help you to create a `~/.drobadi` config file.\r\n\r\nDOptions precedence: options object, or env value or config file or default value.\r\n\r\n\r\n## Library use\r\n\r\n### Install dependency\r\n\r\nYou have to import as dependency\r\n```\r\npnpm install drobadi\r\n```\r\n\r\n### Define the requirements, example:\r\n``` \r\nimport {Drobadi, DOptions} from \"drobadi\";\r\n\r\nconst dOptions = new DOptions({\r\n    \"dropboxToken\": 'My dropbox token is a secret',\r\n    \"path\": \"from-drobadi\",\r\n    \"overrideTargetBackup\": true\r\n});\r\nlet drobadi = new Drobadi();\r\n```\r\n\r\n### create a remote backup from local directory\r\n```\r\nlet promiseResult =  drobadi.backup(dOptions, \"./myData/\", \"dataBack.zip\")\r\n```\r\n\r\n### list remote backups\r\n```\r\nlet promiseResult = drobadi.list(dOptions);\r\n```\r\n\r\n### Restore remote backup in current directory\r\n```\r\nlet promiseResult = drobadi.download(dOptions, \"dataBack.zip\")\r\n```\r\n\r\n### Restore remote backup in a given local destination\r\n```\r\nvar promiseResult = drobadi.download(dOptions, \"dataBack.zip\", \"/home/user/incomming/restored.zip\")\r\n```\r\n\r\n### Restore remote backup and unzip it in a given local directory\r\n```\r\nvar promiseResult = drobadi.downloadAndUnzip(dOptions, \"dataBack.zip\", \"/tmp/restoreHere\")\r\n```\r\n\r\nNB: you could also have a look at tests : [drobadi.test.js](tests/drobadi.test.js)\r\n\r\n\r\n## How to contribute\r\ncf [contributing guide](./.github/CONTRIBUTING.md)\r\n\r\n### Services or activated bots\r\n\r\n| badge  | name                            | description                                                              |\r\n|--------|---------------------------------|:-------------------------------------------------------------------------|\r\n| ![CI/CD](https://github.com/boly38/drobadi/workflows/drobadi-ci/badge.svg) | Github actions                  | Continuous tests.                                                        \r\n| [![Audit](https://github.com/boly38/drobadi/actions/workflows/audit.yml/badge.svg)](https://github.com/boly38/ndrobadi/actions/workflows/audit.yml) | Github actions                  | Continuous vulnerability audit.                                          \r\n| [![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)| [Houndci](https://houndci.com/) | JavaScript  automated review (configured by [`.hound.yml`](.hound.yml)) |\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboly38%2Fdrobadi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboly38%2Fdrobadi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboly38%2Fdrobadi/lists"}