{"id":26286793,"url":"https://github.com/mirasaki-development/backup-manager","last_synced_at":"2025-05-07T16:53:44.057Z","repository":{"id":179414277,"uuid":"655286411","full_name":"Mirasaki-Development/backup-manager","owner":"Mirasaki-Development","description":"An application that provides convenience methods around creating/storing remote backups over SFTP/SSH.","archived":false,"fork":false,"pushed_at":"2024-01-10T02:33:19.000Z","size":476,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-31T12:04:19.581Z","etag":null,"topics":["backup","backup-files","backup-manager","backup-tool","backups","proxy","remote","sftp","socks4","socks5","ssh","ssh2"],"latest_commit_sha":null,"homepage":"https://mirasaki.dev/projects","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mirasaki-Development.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}},"created_at":"2023-06-18T13:01:01.000Z","updated_at":"2024-09-24T12:50:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"b340537f-a761-496c-8eaa-a7ae0d537dca","html_url":"https://github.com/Mirasaki-Development/backup-manager","commit_stats":{"total_commits":16,"total_committers":4,"mean_commits":4.0,"dds":0.25,"last_synced_commit":"8890b61619f638faafb3b1da88eae7b1fc8432eb"},"previous_names":["mirasaki/backup-manager","mirasaki-development/backup-manager"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mirasaki-Development%2Fbackup-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mirasaki-Development%2Fbackup-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mirasaki-Development%2Fbackup-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mirasaki-Development%2Fbackup-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mirasaki-Development","download_url":"https://codeload.github.com/Mirasaki-Development/backup-manager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252921944,"owners_count":21825632,"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","backup-files","backup-manager","backup-tool","backups","proxy","remote","sftp","socks4","socks5","ssh","ssh2"],"created_at":"2025-03-14T20:37:46.957Z","updated_at":"2025-05-07T16:53:44.046Z","avatar_url":"https://github.com/Mirasaki-Development.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"assets/logo.png\" alt=\"Mirasaki Music Bot Logo\" height=\"60\" style=\"border-radius:50px\"/\u003e\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eBackup Manager\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  This is a simple TypeScript (NodeJS) application to seamlessly manage backups over SFTP/SSH. Ideally, you would install this application on a dedicated machine. No proxies or web-servers required.\n\u003c/p\u003e\n\n## Features\n\n- Automatic Backups - Create backups of remote server content on a schedule\n- Directory Backups - Create a backup of a directory on a remote server\n- Directory Files Backups - Create a backup of directory on a remote server, but only backup whitelisted files\n- Multiple Authentication Methods\n  - Password Authentication\n  - Private Key Authentication\n  - SSH Auth Socket Authentication\n- Proxy Support\n- Desktop Notifications\n- Compressed/zipped backups/archives\n- Backup Rotation\n- Configurable to your needs (we'll gladly accept pull requests)\n\n## Installation\n\n1. Download [the latest release](https://github.com/Mirasaki/backup-manager/releases) **or** clone the repository\n2. Run `npm install` in the project directory to install all dependencies\n3. Rename `/config/config.example.yaml` to `/config/config.yaml` and provide your backup configuration (see below for more information)\n4. Run `npm run build`, followed by `npm run start` to start the application\n    - Alternatively, use `npm i -g pm2`, followed by `pm2 start npm --name \"backup-manager\" -- start` to keep the application online in the background\n    - If using `pm2`, run `pm2 save` - this creates a dump-file. When your machine restarts, you can restart all your pm2 processes with `pm2 resurrect`\n\n## Configuration\n\nThis merely serves as an example for reference, always create your config file from the `/config/config.example.yaml` file!\n\nThe configuration file is located at `/config/config.yaml`. The configuration file is written in YAML. You can use [this website](https://www.yamllint.com/) to validate your configuration file.\n\n### Example Configuration\n\n```yaml\n--- # SFTP data\n\n# Remote connection address\n# The server/machine where to get files from\nremote: \u0026remote\n  host: 41.17.129.420 # Your public IP\n  port: 8282 # Your SSH port\n\n# Password authentication\nusername: mirasaki\npassword: your-password-here\n\n# Your private SSH key, if you use one (publickey method)\nprivate-key: |\n    -----BEGIN OPENSSH PRIVATE KEY-----\n    YOUR PRIVATE KEY HERE\n    -----END OPENSSH PRIVATE KEY-----\n# Your SSH passphrase, if your key requires it\npassphrase: your-passphrase-here\n# Alternatively, provide an SSH Auth socket/agent\n# Path to ssh-agent's UNIX socket for ssh-agent-based user authentication (or 'pageant' when using Pagent on Windows).\nssh-auth-sock: \n\n# Your (optional) SOCKS proxy configuration\nproxy:\n  enabled: false\n  host: 159.203.75.200 # proxy hostname\n  port: 1080 # proxy port\n  type: 5 # For SOCKS v5 - 4 or 5\n  command: connect # SOCKS command (createConnection factory function only supports the connect command)\n  destination: *remote # Use remote host reference\n```\n\n### Backup Configuration\n\n‼️ If `destination` doesn't exist, the folder will be created recursively\n\n#### Directory Files Backup (Entries)\n\nThis example creates a backup of the `/D:/DayZ/servers/1` directory on the remote server, and stores it in the `backups/DayZ/PartialBackups` directory on the local machine. The backup is compressed, and a new backup is created every 3 hours. The last 24 backups are kept, which means that backups older than 3 days are deleted.\n\nOnly the files listed in the `entries` array are included in the back-up.\n\n```yaml\n-   type: Entries\n    origin: /D:/DayZ/servers/1\n    destination: backups/DayZ/PartialBackups\n    compress: true\n    interval: 180   # Every 3 hours\n    keep-latest: 24 # 3 Days\n    entries:\n        - mpmissions\\unchained.chernarusplus\n        - profiles\n        - serverDZ.cfg\n        - omega.cfg\n```\n\n#### Directory Backup\n\nThis example creates a backup of the `/D:/DayZ/servers/1` directory on the remote server, and stores it in the `backups/DayZ/OmegaManagerBackups` directory on the local machine. The backup is compressed, and a new backup is created every hour. The last 72 backups are kept, which means that backups older than 3 days are deleted.\n\n```yaml\n-   type: Directory\n    origin: /D:/DayZ/servers/1/backups\n    destination: backups/DayZ/OmegaManagerBackups\n    compress: true\n    interval: 60    # Every hour\n    keep-latest: 72 # 3 days\n```\n\n#### Directory Backup (Full)\n\nThe following example creates a backup of the `/D:/DayZ/servers/1` directory on the remote server, and stores it in the `backups/DayZ/FullBackups` directory on the local machine. The backup is compressed, and a new backup is created every day. Only the latest, single backup is kept.\n\n```yaml\n-   type: Directory\n    enabled: false\n    origin: /D:/DayZ/servers/1\n    destination: backups/DayZ/FullBackups\n    compress: true\n    interval: 1440  # Daily\n    keep-latest: 1  # 1 Day\n```\n\n\u003e Hi there, and thank you for your interest in this project! This application could definitely do a lot more than what it currently offers, we'd love to hear about your use-cases so that we can support a variety of other workflows. [Request a feature here](https://github.com/Mirasaki/backup-manager/issues)\n\n#### Multiple Server Backups\n\nAll of the server/authentication options can also be provided in task configurations to override the target server.\n\nTake the following task as an example:\n\n```yaml\n-   type: Directory\n    enabled: false\n    origin: /D:/DayZ/servers/1\n    destination: backups/DayZ/FullBackups\n    compress: true\n    interval: 1440  # Daily\n    keep-latest: 1  # 1 Day\n```\n\nLet's say we need to run this task on a different server than our default, origin server. We can simply override the ip/origin address, and provide different credentials:\n\n```yaml\n-   type: Directory\n    # ... Existing task properties\n    keep-latest: 1  # 1 Day\n    # Auth/server options\n    remote:\n      host: 41.69.129.420\n      port: 9292\n    username: mirasaki\n    password: your-password-here\n```\n\n## Attribution\n\n- \u003ca href=\"https://www.flaticon.com/free-icons/backup\" title=\"backup icons\"\u003eBackup icon created by Freepik - Flaticon\u003c/a\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirasaki-development%2Fbackup-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmirasaki-development%2Fbackup-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirasaki-development%2Fbackup-manager/lists"}