Contrary to some rumours, APFS doesn’t check file integrity any more than HFS+ does(n’t). It does use checksums in file system metadata, and copy on write, which should make it considerably more robust, but when you have important files whose integrity you need to verify, you’ll need one of the free utilities from my Dintch suite.
Apps in this suite work by calculating the SHA256 digest for files, and tagging each file with that value in an extended attribute. This means that wherever you move or copy that file, its tag can always be checked to verify its integrity. This contrasts with some other apps which write file digests to a hidden file within each folder; unless you copy or move the whole folder, that approach can’t readily verify the integrity of files when they’re copied or moved individually, which is often one of the most important reasons for checking their integrity.
This suite consists of two GUI apps and a command tool:
- Dintch (Directory), intended to work on whole folders, with an option to add timestamps with each tag;
- Fintch (File), designed to work more conveniently with individual files;
cintch(command), incorporating the main features of Dintch and Fintch in a handy command tool.
cintch has three options:
- -t (tag), which adds hash tags to a file, or to all the files in the path supplied.
- -r (retag), which checks whether a valid tag is present; if not, it adds one; if the current hash doesn’t match that of the file, it replaces the old value with new.
- -c (check), which simply checks and reports on tags.
You can also specify the buffer size to be used when calculating the hash on each file, with a default of 512 KB.
cintch ideal for performing automated or background integrity checks, or tagging large numbers of files.
cintch is now available in version 2, which is a Universal binary, and runs native on all versions of macOS from El Capitan to Big Sur betas, and on both Intel and Apple Silicon Macs. That’s particularly important with command tools, as the last thing that you want on your shiny new Apple Silicon system is a call to any command to have to wait for Rosetta 2 to translate an Intel binary to run on ARM processors.
I’ve already explained how mixing Intel-only apps and tools can pose problems: it’s far better on an Apple Silicon system to run a complete calling chain using a single architecture where you can. This update now makes this possible.
cintch version 2 is fully notarized, supplied with a convenient Installer package, and full documentation, here: cintch2
from Downloads above, and from its Product Page, where you can find current versions of Dintch and Fintch, and links to many articles about them.
I hope that it proves useful to you. I will continue to leave its Intel-only version available from its Product Page, in the event that you encounter any problems with this new version.