{"id":17685742,"url":"https://github.com/neved4/tmexcludes","last_synced_at":"2025-05-13T00:05:31.646Z","repository":{"id":243695071,"uuid":"813168092","full_name":"Neved4/tmexcludes","owner":"Neved4","description":" Manage Time Machine exclusions!","archived":false,"fork":false,"pushed_at":"2025-01-13T14:59:35.000Z","size":12,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-13T00:05:24.368Z","etag":null,"topics":["cli","command-line","defaults","macos","plist","script","terminal","time-machine"],"latest_commit_sha":null,"homepage":"","language":"Shell","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}},"created_at":"2024-06-10T15:42:12.000Z","updated_at":"2025-02-03T13:25:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"4ec00748-3c41-4978-9348-76ead4de4cc3","html_url":"https://github.com/Neved4/tmexcludes","commit_stats":null,"previous_names":["neved4/tmexcludes"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neved4%2Ftmexcludes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neved4%2Ftmexcludes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neved4%2Ftmexcludes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neved4%2Ftmexcludes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Neved4","download_url":"https://codeload.github.com/Neved4/tmexcludes/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253843213,"owners_count":21972873,"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":["cli","command-line","defaults","macos","plist","script","terminal","time-machine"],"created_at":"2024-10-24T10:28:54.811Z","updated_at":"2025-05-13T00:05:31.604Z","avatar_url":"https://github.com/Neved4.png","language":"Shell","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## `tmexcludes` - Manage Time Machine exclusions! 🚀\n\nFast, light [macOS] utility that shows, backups and restores the list of\nfiles and folders you have excluded from [Time Machine]. These can also\nbe managed from the [Time Machine] pane of System Settings.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/Neved4/tmexcludes/assets/63655535/69bd9283-e616-4338-9b2a-e43a8bb6cb04\" alt=\"Image Description\" style=\"width: 85%\" /\u003e\n\n  ###### _Catpuccin Mocha_ theme, _Menlo_ font.\n\u003c/div\u003e\n\n## Motivation\n\n[`tmexcludes`] allows extracting and manage Time Machine exclusions\nindependently of other settings, making it easier to sync multiple\nworkstations and add further processing in between the processes.\n\nFor example, one could automate certain tasks on specific folders, provided\nthey are in present in the list. [`tmexcludes`] streamlines the overall\nworkflow, making easier to maintain consistent settings across [macOS]\ninstalls.\n\nThese _excluded paths_ are saved in\n`/Library/Preferences/com.apple.TimeMachine.plist`, stored inside the\n`SkipPaths` array. Running a basic `cp`, `mv` on the `.plist` file could take\ncare of backing up and restoring these settings.\n\nAdditionally, [macOS] provides an alternative way of managing with `defaults`:\n```sh\n# Store the .plist path into a variable\n$ plist=\"/Library/Preferences/com.apple.TimeMachine.plist\"\n\n# Export our Time Machine settings\n$ defaults export $plist TimeMachineConfig.plist\n\n# Load our saved settings\n$ defaults import $plist TimeMachineConfig.plist\n```\n\n## Highlights\n\n- 🚀 _**Fast**_ - minimal overhead, [tmexcludes.sh][`tmexcludes`]\n  only adds ~ `2.5 ms` of overhead.[^hyperfine]\n- 🎨 _**Intuitive**_ - user-friendly, clear way to export and restore\n  excluded [Time Machine] paths.\n- 🔒 _**Robust**_ - ensures that the format passed to `defaults read` is a\n  proper array.\n- 📦 _**Self-contained**_ - no dependencies, lightweight, uses POSIX `sh`,\n  `awk` (e.g. `1586 bytes`, `91 lines`).\n\n## Getting Started\n\n\u003e [!NOTE]\n\u003e _**This utility is only intended to work in macOS.**_\n\nIf you have [`brew`] installed, just run:\n```sh\n$ brew install Neved4/tap/tmbackup\n```\n\nOtherwise, first clone the repo:\n```sh\n$ git clone https://github.com/Neved4/tmexcludes\n```\n\n### Usage\n\nThe following options are available:\n\n```sh\nusage: tmexcludes \u003ccommand\u003e ...\n\nCommands:\n  list        List current exclusions\n  dump        Write exclusions to output\n  load \u003cfile\u003e Load excludes from file\n  system      List built-in system excludes\n```\n\n## Examples\n\n\u003e [!WARNING]\n\u003e _**Always backup your settings first before modifying `defaults`.**_\n\nList the exclusion settings:\n\n```sh\n$ ./tmexcludes.sh list\n(\n    \"/opt/homebrew\",\n    \"/usr/local/texlive\"\n)\n```\n\nWrite all exclusion settings into output:\n```sh\n$ ./tmexcludes.sh dump \u003e excludes.plist\n(\n    \"/opt/homebrew\",\n    \"/usr/local/texlive\"\n)\n```\n\nRestore the settings at a later point:\n```sh\n$ ./tmexcludes.sh load excludes.plist\n```\n\nDone!\n\n## Standards\n\nThis script is compatible with [ISO 9945:2009][POSIX.1-2017],\nalso known as [POSIX.1-2017].[^posix-2017.1]\n\n## License\n\nThis repository is licensed under the terms of the [MIT License][MIT License].\n\n[^hyperfine]: Measured with [`hyperfine`].\n[^posix-2017.1]: _IEEE Std 1003.1-2017: Standard for Information Technology_\n    _— Portable Operating System Interface (POSIX®)_,\n    ISO/IEC/IEEE 9945:2009/COR 2:2017.\n    URL: https://pubs.opengroup.org/onlinepubs/9699919799/\n\n[`tmexcludes`]: (src/tmexcludes.sh)\n[`brew`]: https://brew.sh/\n[`hyperfine`]: https://github.com/sharkdp/hyperfine\n[macOS]: https://www.apple.com/macos/\n[MIT License]: https://opensource.org/license/mit/\n[POSIX.1-2017]: https://pubs.opengroup.org/onlinepubs/9699919799/\n[Time Machine]: https://support.apple.com/en-gb/guide/mac-help/mh35860/14.0/mac/14.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneved4%2Ftmexcludes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneved4%2Ftmexcludes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneved4%2Ftmexcludes/lists"}