YABITROT(8)

NAME
Yabitrot - A tool that checks if your files are not impacted by a bit rotation issue

SYNOPSIS
yabitrot [-nh] [-s integer] [-c integer] [-p path] [-e string] [-v integer] [-L path] [-f path]

DESCRIPTION
Yabitrot will check if your files do not have bitrotation issue.

Yabitrot is yet an other bit rotation engine. Despite several others it works based on the inode and not based on the file's name. As consequence yabitrot will never scan files outside the current file system. But on the other side, if you are using hard-links, you will scan less files.

Yabitrot is using an sqlite DB to store the check sums and the associated inodes. This sqlite DB will be stored at the root of the directory you want to analyze. If this DB is not present, yabitrot will create it. If it's present it will compare the checksum of the files (inodes) you have on disk with the check sum strored in the DB. If the values are not the same, you will be warned that you have some issues with one file.

PARAMETERS

-h  Help. Display the possible parameters

-n  Dry-run. Do not modify the DB.

-s integer
    Size of the chunks in bytes to read files. Default is 16384 bytes

-c integer
    Define the frequency at which yabitrot will perform DB commits. This value is expressed in seconds. By default it's 10 seconds.

-p path
    Path of the folder you want to analyze. This is also where the Sqlite DB will be loctated.

-e string
    List of exceptions in a glob format. During the analyze if a file match one of this patern, we skip the checksum of that file. Example: *.core,*.pyc

-v integer
    verbose. Values can be 0, 1 or 2. Default is 0.

-L path
    Path name of your log file. If not defined, the log data will be printed onthe standard output.

-f path
    path name of a file you want to force a recalculation of the checksum.

EXIT STATUS
The exit status will have the number of bit rotation issue. So, if no issue, the exit status will be 0.

EXAMPLES
The following trigger an analysis strting on the current folder. The logging info will be displayed on the standard output

$ yabitrot

The following trigger an analysis on the folder /mnt/sd1 where *.core and *.pyc files are skipped. The log info will be written on /var/log/yabitrot.log. If there is not DB found in /mnt/sd1, yabitrot will create one. Other else, a comparison between checksums will be performed.

$ yabitrot -p /mnt/sd1 -e "*.core,*.pyc" -L /var/log/yabitrot.log

The following will force a checksum recalculation and store it on the DB. The logging information will be presented on the standard output

$ yabitrot -p /mnt/sd1 -f /mnt/sd1/subfolder/file1

ERRORS
If you scan a folder from different path name, you will receive an error. Please be consistent between each execution. If

HISTORY
Yabitrot has been created in October 2018 on OpenBSD 6.4.

AUTHOR
Yabitrot was written by Vincent Delft <vincent.delft@gmail.com>.

CAVEATS
Yabitrot has been developped on OpenBSD. But has been tested on Windows 10 and on Mac OSX 10.14.