{"id":20711058,"url":"https://github.com/mohammedal-mahdawi/nosbackup","last_synced_at":"2026-07-14T23:32:03.345Z","repository":{"id":143901547,"uuid":"144343892","full_name":"MohammedAl-Mahdawi/nosbackup","owner":"MohammedAl-Mahdawi","description":"NOSBackup - CLI Backup App","archived":false,"fork":false,"pushed_at":"2019-07-29T06:57:46.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-19T10:48:26.254Z","etag":null,"topics":["backup","chunk","dropbox","dropbox-client","streams"],"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/MohammedAl-Mahdawi.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-08-11T00:40:16.000Z","updated_at":"2022-06-14T16:09:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"c4ca352c-210e-4658-a251-230e75691992","html_url":"https://github.com/MohammedAl-Mahdawi/nosbackup","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/MohammedAl-Mahdawi/nosbackup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammedAl-Mahdawi%2Fnosbackup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammedAl-Mahdawi%2Fnosbackup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammedAl-Mahdawi%2Fnosbackup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammedAl-Mahdawi%2Fnosbackup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MohammedAl-Mahdawi","download_url":"https://codeload.github.com/MohammedAl-Mahdawi/nosbackup/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammedAl-Mahdawi%2Fnosbackup/sbom","scorecard":{"id":95619,"data":{"date":"2025-08-11","repo":{"name":"github.com/MohammedAl-Mahdawi/nosbackup","commit":"02af0ae50574b6f03ffbc6f4867629e394eecb84"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/14 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-15T08:57:26.442Z","repository_id":143901547,"created_at":"2025-08-15T08:57:26.447Z","updated_at":"2025-08-15T08:57:26.447Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35483857,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-14T02:00:06.603Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","chunk","dropbox","dropbox-client","streams"],"created_at":"2024-11-17T02:13:53.712Z","updated_at":"2026-07-14T23:32:03.339Z","avatar_url":"https://github.com/MohammedAl-Mahdawi.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NOSBackup\n\n\u003e For more comprehensive solution please take a look at [ServerBackup](https://www.npmjs.com/package/server-backup)\n\nA CLI application that allows you to backup what you want and when you want from your PC/server to Dropbox, NOSBackup uses streams and chunks in order to handle big data.\n\n\n## Table of Contents\n\n1.  [Documentation](#documentation)\n    1.  [Requirements](#requirements)\n    2.  [Installation](#installation)\n    3.  [How to use it](#usage)\n    4.  [How it works](#howitworks)\n    5.  [nosbackup.config.json](#nosbackup-config-json)\n    6.  [nosbackup.destinations.json](#nosbackup-destinations-json)\n    6.  [Commands](#commands)\n    6.  [Questions](#questions)\n\n\n2.  [Support](#support)\n3.  [License](#license)\n\n\n## [Documentation](#documentation)\n\n\u003ca name=\"documentation\"\u003e\u003c/a\u003e\n\n### Requirements\n\n\u003ca name=\"requirements\"\u003e\u003c/a\u003e\n\n1. First, make sure you have the latest version of [Node.js](https://nodejs.org) installed.\n2. Create a Dropbox app from [here](https://www.dropbox.com/developers/apps/create) and save its access token to use it later with NOSBackup.\n3. Create four folders in your Dropbox app folder with these names: `manually`, `daily`, `weekly`, and `monthly`.\n4. NOSBackup relies on `mysqldump` and `mongodump` to backup MySQL and MongoDB databases, so make sure these tools are installed if you are planning to backup these databases.\n\n### Installation\n\n\u003ca name=\"installation\"\u003e\u003c/a\u003e\n\nRun:\n\n```shell\nnpm install nosbackup -g\n```\n\n\n### How to use it?\n\n\u003ca name=\"usage\"\u003e\u003c/a\u003e\n\nGo to an empty folder that you have permissions to write into it and run: \n\n```shell\nnosbackup b now\n```\n\n### How it works\n\n\u003ca name=\"howitworks\"\u003e\u003c/a\u003e\n\nNOSBackup needs two files in the directory that you run it within it, these files are `nosbackup.config.json` and `nosbackup.destinations.json`, so when you run it for the first time it will ask you to create these configurations and destinations files then it will be able to continue.\n\nNOSBackup currently able to create a daily, weekly, monthly and manually backups, the manual backup is the backup that you can create manually at any time without a schedule.\n\n\n### nosbackup.config.json\n\n\u003ca name=\"nosbackup-config-json\"\u003e\u003c/a\u003e\n\nNOSBackup uses this file to save its configurations, here is a sample of this file:\n\n```json\n{\n\t\"accessToken\": \"your-dropbox-app-access-token\",\n\t\"monthlyLimit\": 4,\n\t\"weeklyLimit\": 4,\n\t\"dailyLimit\": 30,\n\t\"backupAtHour\": 4,\n\t\"backupAtMinute\": 30\n}\n```\n\nYou can create this file manually by using any text editor or you can let NOSBackup generates it for you, here is what every configuration means:\n\n- **accessToken**: (String) Your Dropbox app access token.\n- **monthlyLimit**: (Number) How many backups should remain in the `monthly` folder, when this number reached and NOSBackup wants to create a new backup it will delete the oldest backup first.\n- **weeklyLimit**: (Number) How many backups should remain in the `weekly` folder, when this number reached and NOSBackup wants to create a new backup it will delete the oldest backup first.\n- **dailyLimit**: (Number) How many backups should remain in the `daily` folder, when this number reached and NOSBackup wants to create a new backup it will delete the oldest backup first.\n- **backupAtHour**: (Number) At which hour(24-hour clock) you want this backup to run.\n- **backupAtMinute**: (Number) At which minute you want this backup to run.\n\n\n### nosbackup.destinations.json\n\n\u003ca name=\"nosbackup-destinations-json\"\u003e\u003c/a\u003e\n\nNOSBackup uses this file to save the destinations, here is a sample of this file:\n\n```json\n[\n    {\n        \"type\": \"fileDownload\",\n        \"fileToDownload\": \"/daily/2018-01-02-0103/name_2018-01-02-0103.zip\",\n        \"fileToDownloadTo\": \"/home/mohammed/Documents/Tmp/20/name_2018-01-02-0103.zip\"\n    },\n    {\n        \"type\": \"filesDownload\",\n        \"folderToDownloadFrom\": \"/daily/2018-01-02-0103\",\n        \"folderToDownloadTo\": \"/home/mohammed/Documents/Tmp/21\"\n    },\n    {\n        \"type\": \"files\",\n        \"archive\": true,\n        \"path\": \"/media/mohammed/My Passport/Dropbox/htdocs/my-files\",\n        \"name\": \"my-files\"\n    },\n    {\n        \"type\": \"files\",\n        \"archive\": false,\n        \"path\": \"/media/mohammed/My Passport/Dropbox/Pictures/\"\n    },\n    {\n        \"type\": \"file\",\n        \"path\": \"/media/mohammed/My Passport/Dropbox/Pictures/featured.jpg\"\n    },\n    {\n        \"type\": \"mySQL\",\n        \"DbName\": \"tajer\",\n        \"DbUser\": \"root\",\n        \"DbPassword\": \"\"\n    },\n    {\n        \"type\": \"mySQL\",\n        \"DbName\": \"NosBackupTest\",\n        \"DbUser\": \"root\"\n    },\n    {\n        \"type\": \"mongoDB\",\n        \"DbName\": \"Nos\"\n    }\n]\n```\n\nYou can create this file manually using any text editor or you can let NOSBackup generate it for you.\n\nThe destinations are self-explained, you can have as many destinations as you want, the destinations will run sequentially for many reasons, here is an explanation for these destinations:\n\n- **fileDownload**: In this destination you have a file in your Dropbox folder app and you want to download it, the `fileToDownload` is the file that you want to download and `fileToDownloadTo` is where you want to download this file to.\n- **filesDownload**: In this destination you have a bunch of files in a folder in your Dropbox folder app and you want to download them, the `folderToDownloadFrom` is the folder that you want to download these files from it and `folderToDownloadTo` is where you want to download these files to.\n- **files**: In this destination you have a bunch of files in a local folder and you want to upload them to your Dropbox folder app, you can archive them(zip them) then upload them or you can upload them as they, just specify where these files are in `path` and whether you want to archive them or not in `archive` and give then a unique name in `name`.\n- **file**: In this destination you have a file in a local folder and you want to upload it to your Dropbox folder app, just specify where this file live in `path`.\n- **mySQL**: In this destination you have a MySQL database and you want to back it up and upload it to your Dropbox folder app.\n- **mongoDB**: In this destination you have a MongoDB database and you want to back it up and upload it to your Dropbox folder app.\n\n\n### Commands\n\n\u003ca name=\"commands\"\u003e\u003c/a\u003e\n\n```shell\n  Usage: nosbackup [options] [command]\n\n  PC/Server backup CLI app to backup to Dropbox using streams and chunks to handle big data.\n\n  Options:\n\n    -V, --version     output the version number\n    -h, --help        output usage information\n\n  Commands:\n\n    configurations|c  Reset the configurations\n    destinations|d    Reset destinations\n    backup|b [now]    Backup, using the existing configurations and destinations, or create them if they do not exist.\n```\n\nFor example you can run:\n\n```shell\nnosbackup b\n```\nor\n```shell\nnosbackup backup\n```\nTo run the backup and create the configurations and destinations files if they do not exist.\n\nThis option will run the backup in schedule mode, if you want to run the backup immediately you can run:\n\n```shell\nnosbackup b now\n```\n\nor\n\n```shell\nnosbackup backup now\n```\n\nTo create/recreate the configurations file run:\n\n```shell\nnosbackup c\n```\nor\n```shell\nnosbackup configurations\n```\n\nTo create/recreate the destinations file run:\n\n```shell\nnosbackup d\n```\nor\n```shell\nnosbackup destinations\n```\n\nTo get help run:\n\n```\nnosbackup -h\n```\nor\n```\nnosbackup --help\n```\n\n### Questions\n\n\u003ca name=\"questions\"\u003e\u003c/a\u003e\n\n**How to daemonized, monitor and keep NOSBackup alive forever.**\n\nThere are a lot of tools, however, you can use [PM2](https://github.com/Unitech/PM2/) to achieve that.\n1. First install PM2 by running `npm install pm2 -g`\n2. Create `ecosystem.config.js` file in the folder that you specified for NOSBackup(must have write permissions) with the following content:\n\n    ```\n    module.exports = {\n    apps: [{\n        name: 'NOSBackup',\n        script: 'nosbackup',\n        cwd: '/path/to/this/folder/',\n        args: 'b'\n    }]\n    };\n    ```\n    **Please replace `/path/to/this/folder/` with the folder path.**\n\n3. Run `pm2 start ecosystem.config.js` in the same folder.\n4. To stop and delete the process(undo the above step) you can run `pm2 delete NOSBackup`\n\n## Support\n\n\u003ca name=\"support\"\u003e\u003c/a\u003e\n\nThis app built to run on Linux PCs/servers, so it may or may not work on your PC, please only report an issue if you run a Linux based operating system, unfortunately, I will not be able to test and reproduce the issue in order to fix it on the other platforms.\n\nYou are welcome to contribute code and provide pull requests for NOSBackup, also please feel free to suggest or request any features or enhancements.\n\n## License\n\n\u003ca name=\"license\"\u003e\u003c/a\u003e\n\nCopyright (c) 2018 [Mohammed Al-Mahdawi](https://al-mahdawi.com/)\nLicensed under the **MIT** license.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohammedal-mahdawi%2Fnosbackup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmohammedal-mahdawi%2Fnosbackup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohammedal-mahdawi%2Fnosbackup/lists"}