https://github.com/boly38/drobadi
Use NodeJS to zip a directory and create backup onto dropbox
https://github.com/boly38/drobadi
backup database dropbox hacktoberfest nodejs zip
Last synced: 6 months ago
JSON representation
Use NodeJS to zip a directory and create backup onto dropbox
- Host: GitHub
- URL: https://github.com/boly38/drobadi
- Owner: boly38
- License: mit
- Created: 2021-11-11T14:50:09.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-09-09T18:37:41.000Z (almost 2 years ago)
- Last Synced: 2025-02-23T11:22:31.477Z (over 1 year ago)
- Topics: backup, database, dropbox, hacktoberfest, nodejs, zip
- Language: JavaScript
- Homepage:
- Size: 424 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# drobadi
Dropbox backup directory
A Node.js tool to
- zip a directory and create backup onto Dropbox,
- list backups,
- download a backup
- or download and unzip a backup.
[](https://npmjs.org/package/drobadi)
## Command line usage
### Setup
**install drobadi**
```
pnpm install drobadi@latest --global
```
**set your preferences**
A dropbox application (`dropboxAppKey`,`dropboxAppSecret`), and long-lived refresh-token (`dropboxRefreshToken`) are required.
NB: in order to understand how-to get a `refresh-token, cf [dropbox-refresh-token](https://github.com/boly38/dropbox-refresh-token)
The old-long-lived access-token (`dropboxToken`) are always supported but this method is deprecated and will be removed in futur release.
```
drobadi setup
```
_(first time only) create a drobadi config file `~/.drobadi`_
To remove this setup
```
drobadi unlink
```
NB: you could create other custom drobadi config files, and choose custom drobadi config file by using `DBD_CONFIG_FILE` env.
### Show help
- `drobadi`
_show actions_
### Create a backup
- `drobadi backup []`
_create a remote zip backup from local directory_
Example: zip local directory `../tmp/backup/myDir` then upload as dropbox backup `/backup/biolo.zip`
```
drobadi backup ../tmp/backup/myDir biolo.zip
```
This action will success if the target dropbox already exists with the same zip file.
This action will fail if a different target dropbox already exists (use `forceBackup` to override it).
`backup` is the default dropbox backup target directory and may be changed using options.
### Create or override a backup
- `drobadi forceBackup []`
### List backups
- `drobadi list`
- `DBD_CONFIG_FILE=./tmp/myDrobadiConfig drobadi list`
_list remote backups_
### Download a backup
- `drobadi download []`
_download a remote backup into local file_
Example: download dropbox file `/backup/biolo.zip` as local file `./biolo.zip`
```
drobadi download biolo.zip
```
Example: download dropbox file `/backup/biolo.zip` as local file `/tmp/ddd.zip`
```
drobadi download biolo.zip /tmp/ddd.zip
```
### Download and unzip a backup
- `drobadi downloadAndUnzip []`
_download a remote backup and unzip it into local directory_
Example: download dropbox file `/backup/biolo.zip` and unzip it into local directory `./biolo`
```
drobadi downloadAndUnzip biolo.zip ./biolo
```
## DOptions
Drobadi options are
- `dropboxAppKey` (or `DBD_DROPBOX_APP_KEY` env. Default: `null`. **Required**) : [dropbox application](https://www.dropbox.com/developers/apps/) key.
- `dropboxAppSecret` (or `DBD_DROPBOX_APP_SECRET` env. Default: `null`. **Required**) : dropbox application secret.
- `dropboxRefreshToken` (or `DBD_DROPBOX_REFRESH_TOKEN`. Default: `null`. env. **Required**) : dropbox application [refresh-token](https://github.com/boly38/dropbox-refresh-token).
- `path` (or `DBD_PATH` env. Default: `backup`) : dropbox target directory that receive backup files.
- `overrideTargetBackup` (or `DBD_OVERRIDE_TARGET_BACKUP` env. Default: `false`) : override target backup file.
Deprecated option:
- `dropboxToken` (or `DBD_DROPBOX_TOKEN` env. Default: `null`. **DEPRECATED**) : dropbox access-token value,
- `dropboxTokenDisableWarning` (or `DBD_DROPBOX_TOKEN_DISABLE_WARNING` env. Default: `false`.*) : change-it to disable warning log.
Note that `drobadi setup` help you to create a `~/.drobadi` config file.
DOptions precedence: options object, or env value or config file or default value.
## Library use
### Install dependency
You have to import as dependency
```
pnpm install drobadi
```
### Define the requirements, example:
```
import {Drobadi, DOptions} from "drobadi";
const dOptions = new DOptions({
"dropboxToken": 'My dropbox token is a secret',
"path": "from-drobadi",
"overrideTargetBackup": true
});
let drobadi = new Drobadi();
```
### create a remote backup from local directory
```
let promiseResult = drobadi.backup(dOptions, "./myData/", "dataBack.zip")
```
### list remote backups
```
let promiseResult = drobadi.list(dOptions);
```
### Restore remote backup in current directory
```
let promiseResult = drobadi.download(dOptions, "dataBack.zip")
```
### Restore remote backup in a given local destination
```
var promiseResult = drobadi.download(dOptions, "dataBack.zip", "/home/user/incomming/restored.zip")
```
### Restore remote backup and unzip it in a given local directory
```
var promiseResult = drobadi.downloadAndUnzip(dOptions, "dataBack.zip", "/tmp/restoreHere")
```
NB: you could also have a look at tests : [drobadi.test.js](tests/drobadi.test.js)
## How to contribute
cf [contributing guide](./.github/CONTRIBUTING.md)
### Services or activated bots
| badge | name | description |
|--------|---------------------------------|:-------------------------------------------------------------------------|
|  | Github actions | Continuous tests.
| [](https://github.com/boly38/ndrobadi/actions/workflows/audit.yml) | Github actions | Continuous vulnerability audit.
| [](https://houndci.com)| [Houndci](https://houndci.com/) | JavaScript automated review (configured by [`.hound.yml`](.hound.yml)) |