'\" t
.TH mtools 1 "08Jan22" mtools-4.0.37
.SH Name
mtools - utilities to access DOS disks in Unix.
'\" t
.de TQ
.br
.ns
.TP \\$1
..

.tr \(is'
.tr \(if`
.tr \(pd"

.PP
.SH Introduction
Mtools is a collection of tools to allow Unix systems to manipulate
MS-DOS files: read, write, and move around files on an MS-DOS
file system (typically a floppy disk).  Where reasonable, each program
attempts to emulate the MS-DOS equivalent command. However,
unnecessary restrictions and oddities of DOS are not emulated. For
instance, it is possible to move subdirectories from one subdirectory
to another.
.PP
Mtools is sufficient to give access to MS-DOS file systems.  For
instance, commands such as \fR\&\f(CWmdir a:\fR work on the \fR\&\f(CWa:\fR floppy
without any preliminary mounting or initialization (assuming the default
\&\fR\&\f(CW\(ifSYSCONFDIRmtools.conf\(is\fR works on your machine).  With mtools, one can
change floppies too without unmounting and mounting.
.PP
.SH Where\ to\ get\ mtools
.PP
Mtools can be found at the following places (and their mirrors):
 
.nf
.ft 3
.in +0.3i
http://ftp.gnu.org/gnu/mtools/mtools-4.0.37.tar.gz
.fi
.in -0.3i
.ft R
.PP
 
\&\fR
.PP
These patches are named
\&\fR\&\f(CWmtools-\fR\fIversion\fR\fR\&\f(CW-\fR\fIddmm\fR\fR\&\f(CW.taz\fR, where version
stands for the base version, \fIdd\fR for the day and \fImm\fR for the
month. Due to a lack of space, I usually leave only the most recent
patch.
.PP
There is an mtools mailing list at info-mtools @ gnu.org .  Please
send all bug reports to this list.  You may subscribe to the list at
https://lists.gnu.org/mailman/listinfo/info-mtools. (N.B. Please
remove the spaces around the "@". I left them there in order to fool
spambots.)  Announcements of new mtools versions will also be sent to
the list, in addition to the Linux announce newsgroups.  The mailing
list is archived at http://lists.gnu.org/pipermail/info-mtools/
.PP
.SH Common\ features\ of\ all\ mtools\ commands
.PP
.SS Options\ and\ filenames
MS-DOS filenames are composed of a drive letter followed by a colon, a
subdirectory, and a filename. Only the filename part is mandatory, the
drive letter and the subdirectory are optional. Filenames without a
drive letter refer to Unix files. Subdirectory names can use either the
\&'\fR\&\f(CW/\fR' or '\fR\&\f(CW\e\fR' separator.  The use of the '\fR\&\f(CW\e\fR' separator
or wildcards requires the names to be enclosed in quotes to protect them
from the shell. However, wildcards in Unix filenames should not be
enclosed in quotes, because here we \fBwant\fR the shell to expand
them.
.PP
The regular expression "pattern matching" routines follow the Unix-style
rules.  For example, `\fR\&\f(CW*\fR' matches all MS-DOS files in lieu of
`\fR\&\f(CW*.*\fR'.  The archive, hidden, read-only and system attribute bits
are ignored during pattern matching.
.PP
All options use the \fR\&\f(CW-\fR (minus) as their first character, not
\&\fR\&\f(CW/\fR as you'd expect in MS-DOS.
.PP
Most mtools commands allow multiple filename parameters, which
doesn't follow MS-DOS conventions, but which is more user-friendly.
.PP
Most mtools commands allow options that instruct them how to handle
file name clashes. See section name clashes, for more details on these.
.PP
All commands accept the \fR\&\f(CW-i\fR flag which allows to specify an
image file (See section drive letters).
.PP
All commands accept the \fR\&\f(CW-V\fR flag which prints the version, and
most accept the \fR\&\f(CW-v\fR flag, which switches on verbose mode. In
verbose mode, these commands print out the name of the MS-DOS files
upon which they act, unless stated otherwise. See section Commands, for a
description of the options which are specific to each command.
.PP
.SS Drive\ letters
.PP
The meaning of the drive letters depends on the target architectures.
However, on most target architectures, drive A is the first floppy
drive, drive B is the second floppy drive (if available), drive J is a
Jaz drive (if available), and drive Z is a Zip drive (if available).  On
those systems where the device name is derived from the SCSI id, the Jaz
drive is assumed to be at SCSI target 4, and the Zip at SCSI target 5
(factory default settings).  On Linux, both drives are assumed to be the
second drive on the SCSI bus (/dev/sdb). The default settings can be
changes using a configuration file (see section  Configuration).
.PP
The drive letter : (colon) has a special meaning. It is used to access
image files which are directly specified on the command line using the
\&\fR\&\f(CW-i\fR options.
.PP
Example:
 
.nf
.ft 3
.in +0.3i
 mcopy -i my-image-file.bin ::file1 ::file2 .
.fi
.in -0.3i
.ft R
.PP
 
\&\fR
.PP
This copies \fR\&\f(CWfile1\fR and \fR\&\f(CWfile2\fR from the image file
(\fR\&\f(CWmy-image-file.bin\fR) to the \fR\&\f(CW/tmp\fR directory.
.PP
You can also supply an offset within the image file by including
\&\fR\&\f(CW@@\fR\fIoffset\fR into the file name.
.PP
Example:
 
.nf
.ft 3
.in +0.3i
 mcopy -i my-image-file.bin@@1M ::file1 ::file2 .
.fi
.in -0.3i
.ft R
.PP
 
\&\fR
.PP
This looks for the image at the offset of 1M in the file, rather than
at its beginning.
.PP
.SS Current\ working\ directory
.PP
The \fR\&\f(CWmcd\fR command (\(ifmcd\(is) is used to establish the device and
the current working directory (relative to the MS-DOS file system),
otherwise the default is assumed to be \fR\&\f(CWA:/\fR. However, unlike
MS-DOS, there is only one working directory for all drives, and not one
per drive.
.PP
.SS VFAT-style\ long\ file\ names
.PP
This version of mtools supports VFAT style long filenames. If a Unix
filename is too long to fit in a short DOS name, it is stored as a
VFAT long name, and a companion short name is generated. This short
name is what you see when you examine the disk with a pre-7.0 version
of DOS.
 The following table shows some examples of short names:
.PP
 
.nf
.ft 3
.in +0.3i
Long name       MS-DOS name     Reason for the change
---------       ----------      ---------------------
thisisatest     THISIS~1        filename too long
alain.knaff     ALAIN~1.KNA     extension too long
prn.txt         PRN~1.TXT       PRN is a device name
\&\&.abc            ABC~1           null filename
hot+cold        HOT_CO~1        illegal character
.fi
.in -0.3i
.ft R
.PP
 
\&\fR
.PP
 As you see, the following transformations happen to derive a short
name:
.TP
* \ \ 
Illegal characters are replaced by underscores. The illegal characters
are \fR\&\f(CW;+=[]',\e"*\e\e<>/?:|\fR.
.TP
* \ \ 
Extra dots, which cannot be interpreted as a main name/extension
separator are removed
.TP
* \ \ 
A \fR\&\f(CW~\fR\fIn\fR number is generated,
.TP
* \ \ 
The name is shortened so as to fit in the 8+3 limitation
.PP
 The initial Unix-style file name (whether long or short) is also called
the \fIprimary\fR name, and the derived short name is also called the
\&\fIsecondary\fR name.
.PP
 Example:
 
.nf
.ft 3
.in +0.3i
 mcopy /etc/motd a:Reallylongname
.fi
.in -0.3i
.ft R
.PP
 
\&\fR Mtools creates a VFAT entry for Reallylongname, and uses REALLYLO as
a short name. Reallylongname is the primary name, and REALLYLO is the
secondary name.
 
.nf
.ft 3
.in +0.3i
 mcopy /etc/motd a:motd
.fi
.in -0.3i
.ft R
.PP
 
\&\fR Motd fits into the DOS filename limits. Mtools doesn't need to
derivate another name. Motd is the primary name, and there is no
secondary name.
.PP
 In a nutshell: The primary name is the long name, if one exists, or
the short name if there is no long name.
.PP
 Although VFAT is much more flexible than FAT, there are still names
that are not acceptable, even in VFAT. There are still some illegal
characters left (\fR\&\f(CW\e"*\e\e<>/?:|\fR), and device names are still
reserved.
.PP
 
.nf
.ft 3
.in +0.3i
Unix name       Long name       Reason for the change
---------       ----------      ---------------------
prn             prn-1           PRN is a device name
ab:c            ab_c-1          illegal character
.fi
.in -0.3i
.ft R
.PP
 
\&\fR
.PP
 As you see, the following transformations happen if a long name is
illegal:
.TP
* \ \ 
Illegal characters are replaces by underscores,
.TP
* \ \ 
A \fR\&\f(CW-\fR\fIn\fR number is generated,
.PP
.SS Name\ clashes
.PP
When writing a file to disk, its long name or short name may collide
with an already existing file or directory. This may happen for all
commands which create new directory entries, such as \fR\&\f(CWmcopy\fR,
\&\fR\&\f(CWmmd\fR, \fR\&\f(CWmren\fR, \fR\&\f(CWmmove\fR. When a name clash happens, mtools
asks you what it should do. It offers several choices:
.TP
\&\fR\&\f(CWoverwrite\fR\ 
Overwrites the existing file. It is not possible to overwrite a
directory with a file.
.TP
\&\fR\&\f(CWrename\fR\ 
Renames the newly created file. Mtools prompts for the new filename
.TP
\&\fR\&\f(CWautorename\fR\ 
Renames the newly created file. Mtools chooses a name by itself, without
prompting
.TP
\&\fR\&\f(CWskip\fR\ 
Gives up on this file, and moves on to the next (if any)
.PP
To chose one of these actions, type its first letter at the prompt. If
you use a lower case letter, the action only applies for this file only,
if you use an upper case letter, the action applies to all files, and
you won't be prompted again.
.PP
You may also chose actions (for all files) on the command line, when
invoking mtools:
.TP
\&\fR\&\f(CW-D\ o\fR\ 
Overwrites primary names by default.
.TP
\&\fR\&\f(CW-D\ O\fR\ 
Overwrites secondary names by default.
.TP
\&\fR\&\f(CW-D\ r\fR\ 
Renames primary name by default.
.TP
\&\fR\&\f(CW-D\ R\fR\ 
Renames secondary name by default.
.TP
\&\fR\&\f(CW-D\ a\fR\ 
Autorenames primary name by default.
.TP
\&\fR\&\f(CW-D\ A\fR\ 
Autorenames secondary name by default.
.TP
\&\fR\&\f(CW-D\ s\fR\ 
Skip primary name by default.
.TP
\&\fR\&\f(CW-D\ S\fR\ 
Skip secondary name by default.
.TP
\&\fR\&\f(CW-D\ m\fR\ 
Ask user what to do with primary name.
.TP
\&\fR\&\f(CW-D\ M\fR\ 
Ask user what to do with secondary name.
.PP
Note that for command line switches lower/upper differentiates between
primary/secondary name whereas for interactive choices, lower/upper
differentiates between just-this-time/always.
.PP
The primary name is the name as displayed in Windows 95 or Windows NT:
i.e. the long name if it exists, and the short name otherwise.  The
secondary name is the "hidden" name, i.e. the short name if a long name
exists.
.PP
By default, the user is prompted if the primary name clashes, and the
secondary name is autorenamed.
.PP
If a name clash occurs in a Unix directory, mtools only asks whether
to overwrite the file, or to skip it.
.PP
.SS Case\ sensitivity\ of\ the\ VFAT\ file\ system
.PP
The VFAT file system is able to remember the case of the
filenames. However, filenames which differ only in case are not allowed
to coexist in the same directory. For example if you store a file called
LongFileName on a VFAT file system, mdir shows this file as LongFileName,
and not as Longfilename. However, if you then try to add LongFilename to
the same directory, it is refused, because case is ignored for clash
checks.
.PP
The VFAT file system allows you to store the case of a filename in the
attribute byte, if all letters of the filename are the same case, and if
all letters of the extension are the same case too. Mtools uses this
information when displaying the files, and also to generate the Unix
filename when mcopying to a Unix directory. This may have unexpected
results when applied to files written using an pre-7.0 version of DOS:
Indeed, the old style filenames map to all upper case. This is different
from the behavior of the old version of mtools which used to generate
lower case Unix filenames.
.PP
.SS high\ capacity\ formats
.PP
Mtools supports a number of formats which allow storage of more data on
disk than usual. Due to different operating system abilities, these
formats are not supported on all operating systems. Mtools recognizes
these formats transparently where supported.
.PP
In order to format these disks, you need to use an operating system
specific tool. For Linux, suitable floppy tools can be found in the
\&\fR\&\f(CWfdutils\fR package at the following locations~:
 
.nf
.ft 3
.in +0.3i
\&\fR\&\f(CWhttp://www.fdutils.linux.lu/.
.fi
.in -0.3i
.ft R
.PP
 
\&\fR
.PP
See the manual pages included in that package for further detail: Use
\&\fR\&\f(CWsuperformat\fR to format all formats except XDF, and use
\&\fR\&\f(CWxdfcopy\fR to format XDF.
.PP
.SS \ \ More\ sectors
.PP
The oldest method of fitting more data on a disk is to use more sectors
and more cylinders. Although the standard format uses 80 cylinders and
18 sectors (on a 3 1/2 high density disk), it is possible to use up to
83 cylinders (on most drives) and up to 21 sectors. This method allows
to store up to 1743K on a 3 1/2 HD disk. However, 21 sector disks are
twice as slow as the standard 18 sector disks because the sectors are
packed so close together that we need to interleave them. This problem
doesn't exist for 20 sector formats.
.PP
These formats are supported by numerous DOS shareware utilities such as
\&\fR\&\f(CWfdformat\fR and \fR\&\f(CWvgacopy\fR. In his infinite hubris, Bill Gate$
believed that he invented this, and called it \fR\&\f(CW\(ifDMF disks\(is\fR, or
\&\fR\&\f(CW\(ifWindows formatted disks\(is\fR. But in reality, it has already existed
years before! Mtools supports these formats on Linux, on SunOS and on
the DELL Unix PC.
.PP
.SS \ \ Bigger\ sectors
By using bigger sectors it is possible to go beyond the capacity which
can be obtained by the standard 512-byte sectors. This is because of the
sector header. The sector header has the same size, regardless of how
many data bytes are in the sector. Thus, we save some space by using
\&\fIfewer\fR, but bigger sectors. For example, 1 sector of 4K only takes
up header space once, whereas 8 sectors of 512 bytes have also 8
headers, for the same amount of useful data.
.PP
This method permits storage of up to 1992K on a 3 1/2 HD disk.
.PP
Mtools supports these formats only on Linux.
.PP
.SS \ \ 2m
.PP
The 2m format was originally invented by Ciriaco Garcia de Celis. It
also uses bigger sectors than usual in order to fit more data on the
disk.  However, it uses the standard format (18 sectors of 512 bytes
each) on the first cylinder, in order to make these disks easier to
handle by DOS. Indeed this method allows you to have a standard sized
boot sector, which contains a description of how the rest of the disk
should be read.
.PP
However, the drawback of this is that the first cylinder can hold less
data than the others. Unfortunately, DOS can only handle disks where
each track contains the same amount of data. Thus 2m hides the fact that
the first track contains less data by using a \fIshadow
FAT\fR. (Usually, DOS stores the FAT in two identical copies, for
additional safety.  XDF stores only one copy, but tells DOS that it
stores two. Thus the space that would be taken up by the second FAT copy
is saved.) This also means that you should \fBnever use a 2m disk
to store anything else than a DOS file system\fR.
.PP
Mtools supports these formats only on Linux.
.PP
.SS \ \ XDF
.PP
XDF is a high capacity format used by OS/2. It can hold 1840 K per
disk. That's lower than the best 2m formats, but its main advantage is
that it is fast: 600 milliseconds per track. That's faster than the 21
sector format, and almost as fast as the standard 18 sector format. In
order to access these disks, make sure mtools has been compiled with XDF
support, and set the \fR\&\f(CWuse_xdf\fR variable for the drive in the
configuration file. See section Compiling mtools, and \(ifmiscellaneous variables\(is,
for details on how to do this. Fast XDF access is only available for
Linux kernels which are more recent than 1.1.34.
.PP
Mtools supports this format only on Linux.
.PP
\&\fBCaution / Attention distributors\fR: If mtools is compiled on a
Linux kernel more recent than 1.3.34, it won't run on an older
kernel. However, if it has been compiled on an older kernel, it still
runs on a newer kernel, except that XDF access is slower. It is
recommended that distribution authors only include mtools binaries
compiled on kernels older than 1.3.34 until 2.0 comes out. When 2.0 will
be out, mtools binaries compiled on newer kernels may (and should) be
distributed. Mtools binaries compiled on kernels older than 1.3.34 won't
run on any 2.1 kernel or later.
.PP
.SS Exit\ codes
All the Mtools commands return 0 on success, 1 on utter failure, or 2
on partial failure.  All the Mtools commands perform a few sanity
checks before going ahead, to make sure that the disk is indeed an
MS-DOS disk (as opposed to, say an ext2 or MINIX disk). These checks
may reject partially corrupted disks, which might otherwise still be
readable. To avoid these checks, set the MTOOLS_SKIP_CHECK
environmental variable or the corresponding configuration file variable
(see section  global variables)
.SS Bugs
An unfortunate side effect of not guessing the proper device (when
multiple disk capacities are supported) is an occasional error message
from the device driver.  These can be safely ignored.  
.PP
The fat checking code chokes on 1.72 Mb disks mformatted with pre-2.0.7
mtools. Set the environmental variable MTOOLS_FAT_COMPATIBILITY (or the
corresponding configuration file variable, \(ifglobal variables\(is) to
bypass the fat checking.
.PP
.SH See also
floppyd_installtest
mattrib
mbadblocks
mcd
mcopy
mdel
mdeltree
mdir
mdu
mformat
minfo
mkmanifest
mlabel
mmd
mmount
mmove
mrd
mren
mshortname
mshowfat
mtoolstest
mtype
