add README
This commit is contained in:
parent
ebbe20dbdf
commit
fffa380270
95
README.md
Normal file
95
README.md
Normal file
@ -0,0 +1,95 @@
|
||||
[**attrsum**](https://git.eeqj.de/sneak/attrsum/) is a **Go
|
||||
1.22** command-line utility that **adds, updates, verifies, and clears per-file
|
||||
file content checksums stored in extended attributes (xattrs) on macOS (APFS) and
|
||||
Linux**, released under the [WTFPL v2](http://www.wtfpl.net/).
|
||||
|
||||
Original release 2025-05-08.
|
||||
|
||||
Current version 1.0 (2025-05-08).
|
||||
|
||||
---
|
||||
|
||||
## Getting Started — Quick Build
|
||||
|
||||
```bash
|
||||
# prerequisites: Go 1.22+
|
||||
git clone https://git.eeqj.de/sneak/attrsum.git
|
||||
cd attrsum
|
||||
go build -o attrsum .
|
||||
```
|
||||
|
||||
### Install
|
||||
|
||||
```bash
|
||||
go install git.eeqj.de/sneak/attrsum@latest # into GOPATH/bin or $(go env GOBIN)
|
||||
```
|
||||
|
||||
Semantic Versioning 2.0.0 is used for tags.
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
# add checksum & timestamp xattrs to every regular file under DIR
|
||||
attrsum sum add DIR
|
||||
|
||||
# update checksum only when file mtime is newer than stored sumtime
|
||||
attrsum sum update DIR
|
||||
|
||||
# verify checksums, stop on first error
|
||||
attrsum check DIR
|
||||
|
||||
# verify every file, reporting each result, keep going after errors
|
||||
attrsum -v check --continue DIR
|
||||
|
||||
# remove checksum & timestamp xattrs
|
||||
attrsum clear DIR
|
||||
```
|
||||
|
||||
| xattr key | meaning |
|
||||
|---------------------------------------------|--------------------------------|
|
||||
| `berlin.sneak.app.attrsum.checksum` | base-58 multihash (sha2-256) |
|
||||
| `berlin.sneak.app.attrsum.sumtime` | RFC 3339 timestamp of checksum |
|
||||
|
||||
Flags:
|
||||
|
||||
* `-v, --verbose` — per-file log output
|
||||
* `--exclude PATTERN` — skip paths matching rsync/Doublestar glob
|
||||
* `--exclude-dotfiles` — skip any path component that starts with `.`
|
||||
|
||||
`attrsum` **never follows symlinks** and skips non-regular files (sockets, devices, …).
|
||||
|
||||
---
|
||||
|
||||
## Why?
|
||||
|
||||
Apple APFS and Linux ext3/ext4 **store no per-file metadata checksums**, so
|
||||
silent data corruption can pass unnoticed. `attrsum` keeps a portable,
|
||||
tamper-evident checksum **inside each file’s xattrs**, providing integrity
|
||||
verification that travels with the file itself—no external database
|
||||
required. Now you can trust a USB stick didn't eat your data.
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
||||
* Author & maintainer: **sneak** – <sneak@sneak.berlin>
|
||||
* Issues / PRs: <https://git.eeqj.de/sneak/attrsum/>
|
||||
* Code must pass `go vet`, `go test ./...`, and `go fmt`.
|
||||
* No CLA; contributions are under WTFPL v2.
|
||||
|
||||
---
|
||||
|
||||
## Community & Support
|
||||
|
||||
Bug tracker and wiki are in the Gitea repo linked above.
|
||||
|
||||
No formal Code of Conduct; be excellent to each other.
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
*Everything is permitted.*
|
||||
See [WTFPL v2](http://www.wtfpl.net/txt/copying/).
|
Loading…
Reference in New Issue
Block a user