You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,13 +4,13 @@ Exclude developer dependency directories and arbitrary paths from macOS backups.
4
4
5
5
tmignore scans your filesystem for dependency directories (*node_modules*, *target*, *vendor*, *.venv*, etc.) and marks them as excluded from Time Machine using sticky exclusions (`tmutil addexclusion`). It also excludes common developer toolchain paths (Homebrew, Cargo, npm caches, Xcode DerivedData, etc.) by default.
6
6
7
-
## Install
7
+
## 🛠️ Install
8
8
9
9
```
10
10
brew install wassimk/tap/tmignore
11
11
```
12
12
13
-
## Usage
13
+
## 💻 Usage
14
14
15
15
```
16
16
tmignore run [--dry-run] [--verbose] # Scan and exclude
@@ -33,7 +33,7 @@ tmignore run # Exclude everything
33
33
tmignore install # Set up background service (every 24h)
34
34
```
35
35
36
-
## Config
36
+
## ⚙️ Config
37
37
38
38
*~/.config/tmignore/config.toml*
39
39
@@ -64,7 +64,7 @@ extra_exclude_paths = [
64
64
65
65
This file is designed to be synced across machines via dotfiles, iCloud, or similar. On a new machine: `brew install wassimk/tap/tmignore && tmignore run` applies everything.
66
66
67
-
### Built-in exclude paths
67
+
### 📂 Built-in exclude paths
68
68
69
69
These paths are excluded from backups and skipped during scanning by default. No config needed.
70
70
@@ -77,7 +77,7 @@ These paths are excluded from backups and skipped during scanning by default. No
77
77
78
78
Use `disable_exclude_paths` to stop excluding any of these. Use `extra_exclude_paths` to add your own.
79
79
80
-
## Built-in patterns
80
+
## 🔍 Built-in patterns
81
81
82
82
tmignore recognizes 40 dependency directory patterns. Each pattern matches a directory name and verifies a sentinel file exists in the parent directory.
83
83
@@ -126,13 +126,13 @@ tmignore recognizes 40 dependency directory patterns. Each pattern matches a dir
126
126
127
127
Disable any built-in pattern by adding its name to `disable_patterns` in the config. Add new patterns with `[[custom_patterns]]`.
128
128
129
-
## LaunchAgent service
129
+
## 🕐 LaunchAgent service
130
130
131
131
`tmignore install` creates a LaunchAgent at *~/Library/LaunchAgents/com.wassimk.tmignore.plist* that runs `tmignore run` every 24 hours. Logs are written to *~/Library/Logs/tmignore/*.
132
132
133
133
The service runs in user context (not root), so `$HOME` resolves correctly and no elevated permissions are needed.
134
134
135
-
## Backup tool compatibility
135
+
## 💾 Backup tool compatibility
136
136
137
137
The macOS exclusion metadata set by tmignore is honored by multiple backup tools:
138
138
@@ -141,10 +141,10 @@ The macOS exclusion metadata set by tmignore is honored by multiple backup tools
141
141
-**Backblaze**. Check "Also exclude Apple-specified exclusions" in Settings > Exclusions.
142
142
- Other backup tools that read macOS extended attributes will likely honor these exclusions too.
143
143
144
-
## How it works
144
+
## 🧰 How it works
145
145
146
146
tmignore uses `tmutil addexclusion` (without the `-p` flag) which writes a sticky extended attribute (`com.apple.metadata:com_apple_backup_excludeItem`) directly onto the directory. This exclusion follows the item if renamed or moved, and does not require root privileges.
147
147
148
-
## Attribution
148
+
## 🙏 Attribution
149
149
150
150
tmignore is inspired by [asimov](https://github.com/stevegrunwell/asimov) by Steve Grunwell.
0 commit comments