.\" fsck.fat.8 - manpage for fsck.fat
.\"
.\" Copyright (C) 2006-2014 Daniel Baumann <daniel@debian.org>
.\"
.\" This program is free software: you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation, either version 3 of the License, or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program. If not, see <http://www.gnu.org/licenses/>.
.\"
.\" The complete text of the GNU General Public License
.\" can be found in /usr/share/common-licenses/GPL-3 file.
.\"
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH FSCK.FAT 8 2015\-05\-16 3.0.28 dosfstools
.SH NAME
.\" ----------------------------------------------------------------------------
\fBfsck.fat\fP \- check and repair MS\-DOS filesystems
.SH SYNOPSIS
.\" ----------------------------------------------------------------------------
\fBfsck.fat\fP [\fIOPTIONS\fP] \fIDEVICE\fP
.SH DESCRIPTION
\fBfsck.fat\fP verifies the consistency of MS\-DOS filesystems and optionally
tries to repair them.
.PP
The following filesystem problems can be corrected (in this order):
.IP * 4
FAT contains invalid cluster numbers.  Cluster is changed to EOF.
.IP * 4
File's cluster chain contains a loop.  The loop is broken.
.IP * 4
Bad clusters (read errors).  The clusters are marked bad and they are
removed from files owning them.  This check is optional.
.IP * 4
Directories with a large number of bad entries (probably corrupt).  The
directory can be deleted.
.IP * 4
Files . and .. are non\-directories.  They can be deleted or renamed.
.IP * 4
Directories . and .. in root directory.  They are deleted.
.IP * 4
Bad filenames.  They can be renamed.
.IP * 4
Duplicate directory entries.  They can be deleted or renamed.
.IP * 4
Directories with non\-zero size field.  Size is set to zero.
.IP * 4
Directory . does not point to parent directory.  The start pointer is
adjusted.
.IP * 4
Directory .. does not point to parent of parent directory.  The start
pointer is adjusted.
.IP * 4
Start cluster number of a file is invalid.  The file is truncated.
.IP * 4
File contains bad or free clusters.  The file is truncated.
.IP * 4
File's cluster chain is longer than indicated by the size fields.  The file
is truncated.
.IP * 4
Two or more files share the same cluster(s).  All but one of the files are
truncated.  If the file being truncated is a directory file that has already
been read, the filesystem check is restarted after truncation.
.IP * 4
File's cluster chain is shorter than indicated by the size fields.  The file
is truncated.
.IP * 4
Clusters are marked as used but are not owned by a file.  They are marked as
free.
.PP
Additionally, the following problems are detected, but not repaired:
.IP * 4
Invalid parameters in boot sector
.IP * 4
Absence of . and .. entries in non\-root directories
.PP
.\" ----------------------------------------------------------------------------
When \fBfsck.fat\fP checks a filesystem, it accumulates all changes in memory
and performs them only after all checks are complete.  This can be disabled
with the \fB\-w\fP option.
.SH OPTIONS
.IP \fB\-a\fP 4
Automatically repair the filesystem.  No user intervention is necessary.
Whenever there is more than one method to solve a problem, the least
destructive approach is used.
.IP \fB\-A\fP 4
Use Atari variation of the MS\-DOS filesystem.  This is default if
\fBfsck.fat\fP is run on an Atari, then this option turns off Atari format.
There are some minor differences in Atari format: Some boot sector fields
are interpreted slightly different, and the special FAT entries for
end\-of\-file and bad cluster can be different.  Under MS\-DOS 0xfff8 is used
for EOF and Atari employs 0xffff by default, but both systems recognize all
values from 0xfff8...0xffff as end\-of\-file.  MS\-DOS uses only 0xfff7 for bad
clusters, where on Atari values 0xfff0...0xfff7 are for this purpose (but
the standard value is still 0xfff7).
.IP \fB\-b\fP 4
Make read\-only boot sector check.
.IP "\fB\-d\fP \fIPATH\fP" 4
Delete the specified file.  If more than one file with that name exist, the
first one is deleted.  This option can be given more than once.
.IP \fB\-f\fP 4
Salvage unused cluster chains to files.  By default, unused clusters are
added to the free disk space except in auto mode (\fB\-a\fP).
.IP \fB\-l\fP 4
List path names of files being processed.
.IP \fB\-n\fP 4
No\-operation mode: non\-interactively check for errors, but don't write
anything to the filesystem.
.IP \fB\-p\fP 4
Same as \fB\-a\fP, for compatibility with other *fsck.
.IP \fB\-r\fP 4
Interactively repair the filesystem.  The user is asked for advice whenever
there is more than one approach to fix an inconsistency.  This is the
default mode and the option is only retained for backwards compatibility.
.IP \fB\-t\fP 4
Mark unreadable clusters as bad.
.IP "\fB\-u\fP \fIPATH\fP" 4
Try to undelete the specified file.  \fBfsck.fat\fP tries to allocate a chain
of contiguous unallocated clusters beginning with the start cluster of the
undeleted file.  This option can be given more than once.
.IP \fB\-v\fP 4
Verbose mode.  Generates slightly more output.
.IP \fB\-V\fP 4
Perform a verification pass.  The filesystem check is repeated after the
first run.  The second pass should never report any fixable errors.  It may
take considerably longer than the first pass, because the first pass may
have generated long list of modifications that have to be scanned for each
disk read.
.IP \fB\-w\fP 4
Write changes to disk immediately.
.IP \fB\-y\fP 4
.\" ----------------------------------------------------------------------------
Same as \fB\-a\fP (automatically repair filesystem) for compatibility with other
fsck tools.
.SH "EXIT STATUS"
.IP 0 4
No recoverable errors have been detected.
.IP 1 4
Recoverable errors have been detected or \fBfsck.fat\fP has discovered an
internal inconsistency.
.IP 2 4
.\" ----------------------------------------------------------------------------
Usage error.  \fBfsck.fat\fP did not access the filesystem.
.SH FILES
.IP "fsck0000.rec, fsck0001.rec, ..." 4
.\" ----------------------------------------------------------------------------
When recovering from a corrupted filesystem, \fBfsck.fat\fP dumps recovered
data into files named 'fsckNNNN.rec' in the top level directory of the
filesystem.
.SH BUGS
.\" ----------------------------------------------------------------------------
Does not create . and .. files where necessary.  Does not remove entirely
empty directories.  Should give more diagnostic messages.  Undeleting files
should use a more sophisticated algorithm.
.SH "SEE ALSO"
\fBfatlabel\fP(8)
.br
.\" ----------------------------------------------------------------------------
\fBmkfs.fat\fP(8)
.SH HOMEPAGE
.\" ----------------------------------------------------------------------------
The home for the \fBdosfstools\fP project is its
.UR https://github.com/dosfstools/dosfstools
GitHub project page
.UE .
.SH AUTHORS
\fBdosfstools\fP were written by
.MT werner.almesberger@\:lrc.di.epfl.ch
Werner Almesberger
.ME ,
.MT Roman.Hodek@\:informatik.\:uni-erlangen.de
Roman Hodek
.ME ,
and others.  The current maintainer is
.MT aeb@\:debian.org
Andreas Bombe
.ME .
