NAME
cfv - Verify file consistency with .sfv, .csv, .crc,
.md5, md5sum, sha1sum, .torrent, par, or par2 files
SYNOPSIS
cfv [-p dir] [-v|-V|-VV] [-r|-rr|-R] [-n|-N]
[--renameformat <s>] [-s|-S] [-zz|-z|-Z|-ZZ] [-T|-C] [-m|-M]
[-i|-I] [-u|-uu|-U] [--unquote <b>] [--fixpaths <s>]
[--showpaths <i>] [--list/--list0 <l>] [--announceurl
<u>] [--piece_size_pow2 <n>] [-t type] [-f file]
[files...]
DESCRIPTION
cfv verifies that the files you have are
the same as those that the were used to create the checksum file.
OPTIONS
- -v
- Enable printing of extra messages.
- -V
- Disable printing of extra messages. (default)
- -VV
- Like -V, but don't print status line at end either.
- -q
- Like -VV, but not even error messages are printed. Check the
exit status.
- -Q
- Only status lines are printed, but not individual errors.
- --progress VAL
- Set when cfv should display progress bars. If no, progress bars
are never displayed. If auto, progress bars are displayed when the
output is to a tty.(default) If yes, progress is always displayed.
- -r
- Recursive mode 1. In create mode, make seperate chksum files
for each dir.
- -rr
- Recursive mode 2. In create mode make a single file with deep
listing in it. Both recursive modes are equivilant for test mode.
- -R
- Disable recursive mode (default)
- -l
- Follow directory symlinks in recursive mode. (default)
- -L
- Don't follow directory symlinks in recursive mode.
- -T
- Set test mode. (default)
- -C
- Set create mode.
- -m
- Check only for missing files (don't compare checksums)
- -M
- Check checksums (default)
- -n
- Rename bad files. With -s, also renames misnamed files to the
correct name.
- -N
- Don't rename bad files (default)
- --renameformat string
- Format string to use with -n option. Simply, put any of the 4
strings %(fullname)s, %(name)s, %(ext)s, and %(count)i in the
format string, along with whatever other text you wish.
The default is '%(name)s.bad-%(count)i%(ext)s'
In detail, this is a standard python format string with mapping
that contains {'fullname': original filename, 'name': fullname
minus extension, 'ext': extension(including .), 'count': rename
attempt}. If the format string does not contain count, then cfv
will append '-%(count)i' to the filename if the first attempt
fails.
- -s
- Search for misnamed files. No effect in create mode. Also, keep
in mind that using -m together with -s will do nothing if the
checksum type doesn't include filesizes, and if it does, can give
false positives if some files have the same size.
- -S
- Don't search for misnamed files. (default)
- -i
- Ignore case. Currently has no effect in create mode.
- -I
- Don't ignore case (default)
- -u
- Show unverified files. If no files in a directory are verified,
shows dir/*. If no files in a directory or its subdirs are
verified, shows dir/**. Has no effect in create mode.
- -uu
- Show each unverified file individually, no special directory
handling. Has no effect in create mode.
- -U
- Don't show unverified files (default)
- -zz
- Force making/reading checksum files as gzipped files, even if
not ending in .gz (mainly useful for "-f -")
- -z
- Make gzipped files in create mode.
- -Z
- Don't create gzipped files automatically. (default)
- -ZZ
- Never use gzip, even if file ends in ".gz".
- --unquote BOOL
- If yes, handle checksum files that were generated by buggy
encoders that quote filenames in checksum formats that don't need
it. Default is no, since quotes can be a valid character in a
filename and we don't want to remove them if they are actually part
of the filename.
- --fixpaths string
- Convert all occurances of any characters in string to the dir
seperator for the current platform. No effect in create mode. Use
an empty string to disable.
- --strippaths VAL
- Strip NUM leading components from file names in test mode.
Similar to the -p/--strip options of patch. VAL may be 'none':
leave exactly as is, 'all': strip everything but the filename, 0:
strip the leading driveletter/slash (if any), 1+: strip this many
path components in addition. The default is 0.
- --showpaths VAL
- Show paths in displayed filenames. VAL should be one of
yes/1/no/0/auto/2 or absolute/relative, or one from first list and
one from second joined by a -. For backwards compatability, 1=yes,
0=none, 2=auto. The default is auto-relative. Abrieviations are
accepted. Examples: --showpaths=y-a always shows absolute paths.
--showpaths=n never shows paths.
- -p dir
- Change to directory before doing anything.
- -f file
- Specify the name of the checksum file to test or create. If
file is -, stdin (for -T) or stdout (for -C) will be used.
- -t type
- Specify the type of the file. Can be sfv, sfvmd5, csv, csv2,
csv4, sha1, md5, bsdmd5, par, par2, torrent, crc, auto, or help. If
the type is help, or an unknown type is given, a list of the types
and their descriptions will be printed. The default is auto, which
will detect the file type for you. When creating, if type is auto
an sfv will be made, unless a different default has been set in the
config file.
- --list listset
- Prints a raw listing of files in the given set (ok, bad,
unverified, notfound). Usually used with -q, but not strictly
needed since specifying --list will redirect all other messages to
stderr.
- --list0 listset
- Like --list but files are seperated by a null char. Useful in
combination with xargs -0.
- --announceurl URL
- Tracker announce URL for .torrent file creation.
- --piece_size_pow2 N
- Power of two to set piece size to for .torrent file creation.
The default is 18, which gives a piece size of 2^18=256KB.
- -h/--help
- Print help info.
- --version
- Print version of cfv and modules it uses. sfv is a
Simple File Verify format file
sfvmd5 is a Simple File Verify format file, using MD5
checksums rather than crc32.
csv is a Comma Seperated Value file, with the fields being
name,size,crc32,
csv2 is a Comma Seperated Value file, with the fields being
name,size,
csv4 is a Comma Seperated Value file, with the fields being
name,size,crc32,path
sha1 is a sha1sum format file
md5 is a md5sum format file
bsdmd5 is a BSD md5 format file
par is parchive v1 format file (test-only)
par2 is parchive v2 format file (test-only)
torrent is a BitTorrent metainfo file
crc is a JPEG Sheriff format crc file
EXIT STATUS
The exit status of cfv can be examined to
determine what kind of errors, if any, occured. An exit status of 1
indictates a command line argument error, or an unhandled
exception. Otherwise, the exit status will be a bitwise OR of:
- 2
- badcrc (a file had a different checksum than listed in the
checksum file)
- 4
- badsize (a file had a different size than listed. Not all
checksum file formats include file size)
- 8
- notfound (a file that was listed was not found)
- 16
- ferror (some other file error occured when trying to open/read
a file)
- 32
- unverified (a file was not verified, only with -u)
- 64
- cferror (a checksum file was not found or not
recognized)
NOTES
Since different platforms represent the path
seperator differently, using recursive mode 2 (-rr) is not
recommended for anything other than personal usage. Although the
addition of the fixpaths option can be used to work around this, it
isn't guaranteed that whatever program others user have will have a
similar feature. The -s option is not currently implemented for
.torrent files. (Unless you also use -m)
EXAMPLES
If no options are specified, the default will be
-T -t auto, and it will search the current directory for any
supported checksum files.
cfv Force the file to test:
cfv -f funny.name Test only the files you have, (avoid file
not found errors):
cfv * Create a csv file for all the files in the current
dir:
cfv -C -tcsv Create a csv file for only the zip files in the
current dir, and specify the filename:
cfv -C -fsomezips.csv *.zip Check if all files in current
and subdirs are verified, but don't verify checksums of files that
are. (For example, before writing a directory to a cdr and you want
to make sure all the files are verified.):
cfv -r -m -u
CONFIGURATION
Upon startup, cfv will test for ~/.cfvrc and
if it exists, read configuration information from it. The file
consists of any number of lines, each having a single option name
and the value seperated by a space. Empty lines and lines beginning
with a # are ignored.
EXAMPLE CONFIGURATION
#this is an example .cfvrc that
specifies all the default options
#don't be verbose (set to 1 or v for -v, 0 or V for -V, -1 or VV
for -VV, -2 or q for -q, -3 or Q for -Q)
verbose V
#use progress meter when output is to a terminal (yes for always,
no for never, auto for when output isatty)
progress auto
#create sfv files by default
default sfv
#sort dir listings before creating a checksum file
dirsort 1
#sort command line specified files
cmdlinesort 1
#expand wildcards in command line (yes for always, no for never,
auto for when os.name is os2, nt, or dos)
cmdlineglob auto
#don't be recursive (set to 0 for -R, 1 for -r, 2 for -rr)
recursive 0
#follow symbolic links
dereference 1
#don't show unverified files (set to 0 for -U, 1 for -u, 2 for
-uu)
showunverified 0
#don't ignore case
ignorecase 0
#don't use workaround for buggy encoders that quote filenames
unnecessarily
unquote 0
#don't fix any paths (note that there is a single space after
fixpaths, thus the value it gets set to is an empty string)
fixpaths
#A more useful example would be:
#fixpaths /\
#don't strip leading directories (all to strip all path info, 0+ to
strip the leading / and the first X components, none for
nothing)
strippaths 0
#show full paths in recursive mode (set to 0 for never, 1 for
always, 2 for only in recursive mode)
showpaths 2
#access checksum filenames that end with .gz as gzipped files (-1
for never, 0 for with .gz, and 1 to make -C make .gz files
automatically)
gzip 0
#don't rename bad files
rename 0
#format to use for renaming bad files with -n
renameformat %(name)s.bad-%(count)i%(ext)s
#don't search for files
search 0
#filename_type can be used to override what type of file to create
when -t isn't specified.
#The format of the argument is <typename>=<regex>. Can
be specified multiple times, the earlier instances having higher
priority.
#for example, the following line would cause cfv -C -f foo.md5 to
create a 'sfvmd5' file rather than a 'md5' file.
#filename_type sfvmd5=md5$ #torrent options:
# you can specify a default announce url:
#announceurl http://foo.bar/announce
# piece size of 2^18 bytes (256KB):
piece_size_pow2 18
FILES
- ~/.cfvrc
- cfv configuration file. See configuration section.
- ~/_cfvrc
- alternate configuration file name. (Since windows won't let you
create files starting with a dot.)
ENVIRONMENT
- HOME
- Where to look for cfvrc file. Note that win9x doesn't set this
to anything automatically.
- CFV_NOFCHKSUM
- Set to a non-empty value to disable usage of python-fchksum
module.
- CFV_NOMMAP
- Set to a non-empty value to disable usage of mmap.
AUTHOR
Matthew Mueller <donut AT dakotacom DOT net>
The latest version can be found at any of:
http://cfv.sourceforge.net/
http://www.dakotacom.net/~donut/programs/cfv.html
ftp://sunsite.unc.edu/pub/Linux/utils/file/
Other programs I have written can be found at:
http://www.dakotacom.net/~donut/programs/
SEE ALSO
md5sum(1),
sha1sum(1),
md5(1),
xargs(1)