{"id":17685752,"url":"https://github.com/neved4/tmbackup","last_synced_at":"2025-05-12T21:47:55.071Z","repository":{"id":205640927,"uuid":"712632560","full_name":"Neved4/tmbackup","owner":"Neved4","description":" Seamless Time Machine backups!","archived":false,"fork":false,"pushed_at":"2025-01-13T14:59:45.000Z","size":322,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-20T18:39:15.712Z","etag":null,"topics":["backup","big-sur","cli","command","line","macos","monterey","script","sonoma","terminal","time-machine","tool","ventura"],"latest_commit_sha":null,"homepage":"","language":"Awk","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/Neved4.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}},"created_at":"2023-10-31T21:31:24.000Z","updated_at":"2025-01-13T14:59:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"69b4fc76-074f-48bf-a465-4523cb46ceea","html_url":"https://github.com/Neved4/tmbackup","commit_stats":null,"previous_names":["neved4/tmbackup"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neved4%2Ftmbackup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neved4%2Ftmbackup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neved4%2Ftmbackup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neved4%2Ftmbackup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Neved4","download_url":"https://codeload.github.com/Neved4/tmbackup/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253829980,"owners_count":21970988,"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","big-sur","cli","command","line","macos","monterey","script","sonoma","terminal","time-machine","tool","ventura"],"created_at":"2024-10-24T10:28:55.911Z","updated_at":"2025-05-12T21:47:55.032Z","avatar_url":"https://github.com/Neved4.png","language":"Awk","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Shell Script](https://img.shields.io/badge/Shell_Script-9DDE66?logo=gnubash\u0026logoColor=000\u0026style=flat)\n![macOS](https://img.shields.io/badge/macOS-000000?logo=apple\u0026logoColor=fff\u0026style=flat)\n\n## `tmbackup` - Seamless Time Machine backups! 🚀\n\nFast, light [macOS] utility that performs [Time Machine] backups on all\nconnected drives.\n\n![](graphics/tmbackup.gif)\n\n###### Generated using [`agg`], [`asciinema`], `Menlo` typeface, theme `Github Dark`.\n\n### Highlights\n\n- 🚀 _**Fast**_ - minimal overhead, [tmbackup.awk](src/tmbackup.awk)\n  executes in only ~ `15 ms`.[^1]\n- 🎨 _**Intuitive**_ - user-friendly, clear color-coded\n  messages for every backup status.\n- 🔒 _**Robust**_ - ensures reliability with effective error handling\n  during the backup.\n- 📦 _**Self-contained**_ - no dependencies, lightweight, uses POSIX `awk`,\n  `sh` (e.g. `3629 bytes`, `186 lines`).\n\n## Getting Started\n\n\u003e [!NOTE]\n\u003e _This utility is only intended to work in macOS._\n\n### Installation\n\nIf you have [`brew`] installed, just run:\n```sh\n$ brew install Neved4/tap/tmbackup\n```\n\n### Usage\n\n```sh\n$ ./tmbackup.sh\n```\n\n#### Logging\n```sh\ntmbackup | tee -a /path/to/output.log\n```\n\n### Compatibility\n\n#### Supported macOS Versions\n\n| Version                 | Supported |\n| :---------------------- | :-------- |\n| **`macOS 14 Sonoma`**   | Yes ✅     |\n| **`macOS 13 Ventura`**  | Yes ✅     |\n| **`macOS 12 Monterey`** | Yes ✅     |\n| **`macOS 11 Big Sur`**  | Yes ✅     |\n\n\u003cdetails closed\u003e\n\u003csummary\u003e\u003cb\u003eSupported Awk and UNIX shells\u003c/b\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\n`tmbackup` is built for `macOS` using `/bin/sh` and `/usr/bin/awk`. It\nadheres to standards when possible, and is made to play nicely with other Awk\nand POSIX sh versions too.\n\nThis allows to execute `tmbackup` with different shells:\n```sh\ndash /path/to/tmbackup.sh\n```\n\nOr to build your own parsing with different Awk implementations:\n```sh\ntmutil destinationinfo | mawk -f /path/to/tmbackup.awk\n```\n\n#### Supported Awk implementations\n\n|     Shell | Version          | Supported |\n| --------: | :--------------- | :-------- |\n|   [`awk`] | `20230909`       | ✅ Yes     |\n|  [`gawk`] | `5.3.0`          | ✅ Yes     |\n| [`goawk`] | `1.25.0`         | ✅ Yes     |\n|  [`mawk`] | `1.3.4-20231126` | ✅ Yes     |\n\n#### Supported shells\n\n|     Shell | Version       | Supported |\n| --------: | :------------ | :-------- |\n|  [`bash`] | `5.2.15`      | ✅ Yes     |\n|  [`dash`] | `0.5.12`      | ✅ Yes     |\n| [`ksh93`] | `93u+m/1.0.7` | ✅ Yes     |\n|  [`mksh`] | `59c`         | ✅ Yes     |\n|  [`oksh`] | `7.3`         | ✅ Yes     |\n|   [`osh`] | `0.18.0`      | ✅ Yes     |\n|  [`posh`] | `0.14.1`      | ❌ No      |\n|  [`yash`] | `2.55`        | ✅ Yes     |\n|   [`zsh`] | `5.9`         | ✅ Yes      |\n\n\u003c/details\u003e\n\n### UX \u0026 Implementation\n\nMore information on this topic: [UX.md](doc/UX.md).\n\n\u003e [!NOTE]\n\u003e _If you have any cool ideas or suggestions to improve things, let me\n\u003e know!_\n\n### Limitations\n\n\u003e [!IMPORTANT]\n\u003e _`tmbackup` does not differentiate between backups interrupted by a\n\u003e hardware failure and a user manually skipping._\n\n## Acknowledgments\n\nThanks to [@0risc] and [@goldbuick] for testing and feedback.\n\n## License\n\n`tmbackup` is licensed under the terms of the [MIT License].\n   \nSee the [LICENSE](LICENSE) file for details.\n\n## Related Projects\n\n- [matteocorti/tmstatus.sh] - general overview and stats\n- [torstenvl/tmutils] - history, marking and deduplication\n- [emrekaankocoglu/disposable-timemachine-docker] - disposable container\n  backups\n- [raphaelcohn/os-x-backup] - encrypted backups to cloud storage\n- [Delvien/Timemachine-mount-usb-backup-then-dismount] - mount drive,\n  backup, dismount\n- [tjluoma/texbar-timemachine] - monitor Time Machine status\n- [fedekrum/Mac-Time-Machine-status] - get info on what Time Machine is\n  doing\n- [tomtaylor/fix_timemachine] - fix broken Time Machine NAS backups\n\n\n[^1]: Tested with [`hyperfine`].\n\n[`agg`]: https://github.com/asciinema/agg\n[`asciinema`]: https://github.com/asciinema/asciinema\n[`hyperfine`]: https://github.com/sharkdp/hyperfine\n[`brew`]: https://brew.sh/\n\n[macOS]: https://www.apple.com/macos/\n[MIT License]: https://opensource.org/license/mit/\n[Time Machine]: https://support.apple.com/en-gb/guide/mac-help/mh35860/14.0/mac/14.0\n[@goldbuick]: https://github.com/goldbuick\n[@0risc]: https://github.com/0risc\n\n[`awk`]: https://www.cs.princeton.edu/~bwk/btl.mirror/\n[`gawk`]: https://www.gnu.org/software/gawk/\n[`goawk`]: https://benhoyt.com/writings/goawk/\n[`mawk`]: https://invisible-island.net/mawk/\n\n[`bash`]: https://git.savannah.gnu.org/cgit/bash.git/\n[`dash`]: https://git.kernel.org/pub/scm/utils/dash/dash.git\n[`ksh93`]: https://github.com/ksh93/ksh\n[`mksh`]: https://github.com/MirBSD/mksh\n[`osh`]: https://www.oilshell.org/cross-ref.html?tag=OSH#OSH\n[`oksh`]: https://github.com/ibara/oksh\n[`posh`]: https://salsa.debian.org/clint/posh\n[`yash`]: https://github.com/magicant/yash\n[`zsh`]: https://github.com/zsh-users/zsh\n\n[matteocorti/tmstatus.sh]: https://github.com/matteocorti/tmstatus.sh\n[torstenvl/tmutils]: https://github.com/torstenvl/tmutils\n[emrekaankocoglu/disposable-timemachine-docker]: https://github.com/emrekaankocoglu/disposable-timemachine-docker\n[raphaelcohn/os-x-backup]: https://github.com/raphaelcohn/os-x-backup\n[Delvien/Timemachine-mount-usb-backup-then-dismount]: https://github.com/Delvien/Timemachine-mount-usb-backup-then-dismount\n[tjluoma/texbar-timemachine]: https://github.com/tjluoma/textbar-timemachine\n[fedekrum/Mac-Time-Machine-status]: https://github.com/fedekrum/Mac-Time-Machine-status/tree/main\n[tomtaylor/fix_timemachine]: https://github.com/tomtaylor/fix_timemachine\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneved4%2Ftmbackup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneved4%2Ftmbackup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneved4%2Ftmbackup/lists"}