{"id":24083385,"url":"https://github.com/mitranim/backup","last_synced_at":"2026-05-15T00:07:38.465Z","repository":{"id":256280557,"uuid":"854804825","full_name":"mitranim/backup","owner":"mitranim","description":"CLI tool for automatic file backups","archived":false,"fork":false,"pushed_at":"2025-02-11T10:16:03.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-24T06:44:38.152Z","etag":null,"topics":["backup","cli"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mitranim.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-09-09T20:04:00.000Z","updated_at":"2025-02-11T10:16:07.000Z","dependencies_parsed_at":"2024-09-15T15:49:52.053Z","dependency_job_id":null,"html_url":"https://github.com/mitranim/backup","commit_stats":null,"previous_names":["mitranim/backup"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitranim%2Fbackup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitranim%2Fbackup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitranim%2Fbackup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitranim%2Fbackup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mitranim","download_url":"https://codeload.github.com/mitranim/backup/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240959115,"owners_count":19884911,"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","cli"],"created_at":"2025-01-09T23:56:31.709Z","updated_at":"2026-05-15T00:07:38.412Z","avatar_url":"https://github.com/mitranim.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Overview\n\nCLI tool for automatic file backups. You provide input and output paths. The tool watches the input paths, detects file changes, and copies files to the output paths, numerated.\n\n## Installation\n\nFirst, install Go: https://golang.org. Then run this:\n\n```sh\ngo install github.com/mitranim/backup@latest\n```\n\nThis will compile the executable into `$GOPATH/bin/backup`. Make sure `$GOPATH/bin` is in your `$PATH` so the shell can discover the `backup` command. For example, my `~/.profile` contains this:\n\n```sh\nexport GOPATH=\"$HOME/go\"\nexport PATH=\"$GOPATH/bin:$PATH\"\n```\n\nAlternatively, you can run the executable using the full path. At the time of writing, `~/go` is the default `$GOPATH` for Go installations. Some systems may have a different one.\n\n```sh\n~/go/bin/backup\n```\n\n## Usage\n\nCreate a configuration file as described below. Run `backup -h` to view help. Run `backup` or `backup -v` to run the tool.\n\n## Configuration\n\nThe tool _requires_ a JSON config file where you specify inputs and outputs. By default, it must be called `backup.json` and located in the current directory. You may provide another config path via `-c`.\n\nTo see all available settings, read the type `Config` in [backup.go](backup.go). Some settings may be provided both at the top level and in individual entries. The entry overrides take priority.\n\nExample config. When writing Windows paths, use double backslashes `\\\\` as separators. The listed values for `debounce`, `deadline`, `throttle` and `limit` are the defaults, and should be omitted unless you want to change them. Note that file paths may be either absolute, or relative to the directory whence you run the tool.\n\n```json\n{\n  \"debounce\": \"1s\",\n  \"deadline\": \"10s\",\n  \"throttle\": \"10m\",\n  \"limit\": 128,\n  \"entries\": [\n    {\n      \"input\": \"/Users/some_user/Documents/some_file_or_directory\",\n      \"output\": \"/Users/some_user/Downloads/some_backups\"\n    },\n    {\n      \"input\": \"Documents/another_file_or_directory\",\n      \"output\": \"Downloads/some_backups\",\n      \"limit\": 64\n    }\n  ]\n}\n```\n\nExample config with Windows paths:\n\n```json\n{\n  \"entries\": [\n    {\n      \"input\": \"C:\\\\Users\\\\some_user\\\\Documents\\\\some_file_or_directory\",\n      \"output\": \"C:\\\\Users\\\\some_user\\\\Downloads\\\\some_backups\"\n    }\n  ]\n}\n```\n\n## Limitations\n\nAt the time of writing, watching the config file itself doesn't seem to work on Windows. This may also be the case for watching other individual files. Watching directories seems to work. Related issue: https://github.com/rjeczalik/notify/issues/225.\n\n## License\n\nhttps://unlicense.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitranim%2Fbackup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmitranim%2Fbackup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitranim%2Fbackup/lists"}