summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md97
1 files changed, 32 insertions, 65 deletions
diff --git a/README.md b/README.md
index 443980d..2b81292 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,16 @@
# Brck -- a simple bit rot checker
-Brck is a simple bit rot checker for legacy file systems. It records and
-compares the modification times and cryptographic hash sums of regular files.
-When a file's hash changed but it's modification time did not, then Brck
-reports the file as corrupted so you have a chance to restore the file from
-backup. You do have backups, right? 😉
+Brck is a simple bit rot checker for legacy file systems.
+It records and compares the modification times and cryptographic hash sums of regular files.
+When a file's hash changed but it's modification time did not, then Brck reports the file as corrupted so you have a chance to restore the file from backup.
+You do have backups, right? 😉
-Brck's original source code is hosted [here][brck-repo].
+Brck's original source code is hosted on [git.skreutz.com](https://git.skreutz.com/brck.git/).
## Installation
-Brck is available on [crates.io][brck-cratesio]. You can install it using
-Rust's package manager [Cargo][cargo].
+Brck is available on [crates.io](https://crates.io/crates/brck).
+You can install it using Rust's package manager [Cargo](https://doc.rust-lang.org/cargo/).
$ cargo install brck
@@ -21,13 +20,11 @@ Alternatively you can run (or install) the experimental Nix flake.
## Usage
-Without any options, Brck will record all regular files in current working
-directory recursively and write those records to a gzipped `.brck` file.
+Without any options, Brck will record all regular files in current working directory recursively and write those records to a gzipped `.brck` file.
$ brck
-When you run the same command again, Brck will compare the recorded files
-against the current file system and report any corrupted files.
+When you run the same command again, Brck will compare the recorded files against the current file system and report any corrupted files.
$ brck
corrupted: ./test_file
@@ -37,9 +34,9 @@ You can optionally deny all changes to existing files:
$ brck -d changed,removed,corrupted
-Brck is quiet by default. Increase the verbosity using `-v` or request a
-summary using `-s`. Alternatively, enable the JSON output using `-J` and
-perform your own post-processing, e.g., using [jq][]:
+Brck is quiet by default.
+Increase the verbosity using `-v` or request a summary using `-s`.
+Alternatively, enable the JSON output using `-J` and perform your own post-processing, e.g., using [jq](https://jqlang.github.io/jq/):
$ brck -vvJ | jq -sr 'group_by(.type)[] | [.[0].type, length] | @tsv' 2>/dev/null
added 4
@@ -52,80 +49,50 @@ See the built-in help for all supported options:
## Features
-- Parallel sequential processing: Brck processes files in parallel, yet outputs
- and records files in-order
+* Parallel sequential processing: Brck processes files in parallel, yet outputs and records files in-order
-- One-pass: Brck reads your files only once
+* One-pass: Brck reads your files only once
-- Constant memory: Brck's memory footprint is independent of the number of
- processed files
+* Constant memory: Brck's memory footprint is independent of the number of processed files
-- Relative paths: Brck records relative paths such that you can move the
- containing directory around
+* Relative paths: Brck records relative paths such that you can move the containing directory around
-- Quiet by default: Without any options, Brck prints denied differences to
- standard output, and errors to standard error; nothing else
+* Quiet by default: Without any options, Brck prints denied differences to standard output, and errors to standard error; nothing else
-- Human readable or machine readable, newline-delimited JSON output, at your
- option
+* Human readable or machine readable, newline-delimited JSON output, at your option
-- Graceful shutdown on the first interrupt signal, forceful immediate shutdown
- on the second
+* Graceful shutdown on the first interrupt signal, forceful immediate shutdown on the second
-- [Pledged][pledge] and [unveiled][unveil] on OpenBSD
+* [Pledged](https://man.openbsd.org/pledge) and [unveiled](https://man.openbsd.org/unveil) on OpenBSD
## Limitations
-- Brck doesn't follow symlinks.
+* Brck doesn't follow symlinks.
-- Brck doesn't track hardlinks. Performance will be suboptimal in the presence
- of large hardlinked files because Brck hashes each copy individually.
+* Brck doesn't track hardlinks. Performance will be suboptimal in the presence of large hardlinked files because Brck hashes each copy individually.
-- Brck doesn't track reflinks. Modern copy-on-write file systems are out of
- scope because they should check file content integrity themselves, like
- OpenZFS and Btrfs do.
+* Brck doesn't track reflinks. Modern copy-on-write file systems are out of scope because they should check file content integrity themselves, like OpenZFS and Btrfs do.
-- Brck may leak file meta data because its `.brck` file may have different
- permissions than the listed files.
+* Brck may leak file meta data because its `.brck` file may have different permissions than the listed files.
-- Brck doesn't respect platform-specific temporary directories such as `TMPDIR`
- on UNIX. Instead, it creates its temporary files in the current working
- directory, next to the `.brck` file. This way, Brck can update the files
- atomically on POSIX-conform systems.
+* Brck doesn't respect platform-specific temporary directories such as `TMPDIR` on UNIX. Instead, it creates its temporary files in the current working directory, next to the `.brck` file. This way, Brck can update the files atomically on POSIX-conform systems.
-- Brck may fail to remove its temporary files, e.g., when the process gets
- killed.
+* Brck may fail to remove its temporary files, e.g., when the process gets killed.
## License
-This work is dual-licensed under [MIT](LICENSE-MIT) or
-[Apache License, Version 2.0](LICENSE-APACHE-2.0).
+This work is dual-licensed under [MIT](LICENSE-MIT) or [Apache License, Version 2.0](LICENSE-APACHE-2.0).
## Contribution
-Contributions are welcome! Please [contact][] me via email.
+Contributions are welcome! Please [contact](https://www.skreutz.com/contact/) me via email.
## See also
-- Definition of *bit rot* in the [Jargon File][jargon]
- ([archive][jargon-archive])
+* Definition of *bit rot* in the [Jargon File](http://www.catb.org/jargon/html/B/bit-rot.html) ([archive](https://web.archive.org/web/20240312124910/http://www.catb.org/jargon/html/B/bit-rot.html))
-- A similar Python program named [Bitrot][python-bitrot]
+* A similar Python program named [Bitrot](https://github.com/ambv/bitrot/)
-- A similar Rust program named [Legdur][legdur] ([crates.io][legdur-cratesio])
+* A similar Rust program named [Legdur](https://git.cyplo.dev/cyplo/legdur) ([crates.io](https://crates.io/crates/legdur))
-- A blog post on [Things UNIX can do atomically][rcrowley]
-
-[brck-repo]: https://git.skreutz.com/brck.git/
-[brck-cratesio]: https://crates.io/crates/brck
-[cargo]: https://doc.rust-lang.org/cargo/
-[jq]: https://jqlang.github.io/jq/
-[pledge]: https://man.openbsd.org/pledge
-[unveil]: https://man.openbsd.org/unveil
-[jargon]: http://www.catb.org/jargon/html/B/bit-rot.html
-[jargon-archive]: https://web.archive.org/web/20240312124910/http://www.catb.org/jargon/html/B/bit-rot.html
-[legdur]: https://git.cyplo.dev/cyplo/legdur
-[legdur-cratesio]: https://crates.io/crates/legdur
-[python-bitrot]: https://github.com/ambv/bitrot/
-[rcrowley]: https://web.archive.org/web/20160304224616/http://rcrowley.org/2010/01/06/things-unix-can-do-atomically
-[contact]: https://www.skreutz.com/contact/
+* A blog post on [Things UNIX can do atomically](https://web.archive.org/web/20160304224616/http://rcrowley.org/2010/01/06/things-unix-can-do-atomically)
Generated by cgit. See skreutz.com for my tech blog and contact information.