2.0.0 • Published 1 year ago

@spongex/backup_scripts v2.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Backup NodeJS Scripts

Local and system backup scripts. See each section for usage of each script.

Install globally:

npm i -g @spongex/backup_scrips

Or per-project as a dev-dependency:

npm i @spongex/backup_scrips --save-dev

Local Backup

Command: npx localbak

Create a local _backup folder and copy the current folder to the new one.

Allows for certain files and folders to be ignored. In the running folder, create a file called .localbak_config.json with the following format:

{
  "ignore": [
    ".cmake",
    ".git",
    "build",
    "docs",
    "node_modules"
  ]
}

System Backup

Command: npx sysbak

Does heavy command injection, use at your own risk!

See NodeJS's documentation on exec for more information on how commands work.

Use a third party sync utility such as rclone and automate folder syncronization.

To use, define a command to run a sync utility and a list of jobs in a _config.json file located in a .sysbak folder placed in your user home directory.

Two variables are required to be defined:

  • "backup_command" - The sync command to run. The script can replace variables defined in this command.
  • "jobs" - An array of job objects to run. Each job should have a name and location item.

An exampe format is as follows:

{
  "backup_command": "rclone --log-file=$LOG_LOCATION/$JOB_NAME.log --log-level $LOGGING_LEVEL --skip-links --ask-password=false --password-command $RCLONE_PASSWORD_COMMAND sync $JOB_LOCATION $BACKUP_NAME:$JOB_NAME",
  "jobs": [
    {
      "name": "Backup",
      "location": "/home/matthew/Backup"
    },
    {
      "name": "Documents",
      "location": "/home/matthew/Documents"
    },
    {
      "name": "Music",
      "location": "/home/matthew/Music"
    },
    {
      "name": "Pictures",
      "location": "/home/matthew/Pictures"
    },
    {
      "name": "Projects",
      "location": "/home/matthew/Projects"
    },
    {
      "name": "Videos",
      "location": "/home/matthew/Videos"
      "vars" {
        {
          "variable": "$EXAMPLE",
          "value": "this is only an example!"
        }
      }
    }
  ],
  "cmdVars": [
    {
      "variable": "$LOGGING_LEVEL",
      "value": "NOTICE"
    },
    {
      "variable": "$RCLONE_PASSWORD_COMMAND",
      "value": "\"pass rclone/config\""
    },
    {
      "variable": "$BACKUP_NAME",
      "value": "backup_crypt"
    }
  ]
}

The script has the following command variables pre-defined:

  • $JOB_NAME - The name of the job from the job object
  • $JOB_LOCATION - The location of the job from the job object
  • $LOG_LOCATION - The location of the log files

Additional options

Additional variables can be defiend for replacement in the backup_command. Either with an optional "cmdVars" array or a "vars" array defiend in each job. Each command is an object that requires a "variable" and "value" item. See the above example for details.

Each job object can also have a backup_command item that will overwrite the global defiend one.