.\"
.\" exportfs(8)
.\" 
.\" Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de>
.\" Modifications 1999-2003 Neil Brown <neilb@cse.unsw.edu.au>
.TH exportfs 8 "18 July 2003"
.SH NAME
exportfs \- maintain list of NFS exported file systems
.SH SYNOPSIS
.BI "/usr/sbin/exportfs [-avi] [-o " "options,.." "] [" "client:/path" " ..]
.br
.BI "/usr/sbin/exportfs -r [-v]"
.br
.BI "/usr/sbin/exportfs [-av] -u [" "client:/path" " ..]
.br
.BI "/usr/sbin/exportfs [-v]
.br
.BI "/usr/sbin/exportfs -f"
.br
.SH DESCRIPTION
The
.B exportfs
command is used to maintain the current table of exported file systems for
NFS. This list is kept in a separate file named
.BR /var/lib/nfs/etab
which is read by
.B mountd
when a remote host requests access to mount a file tree, and parts of
the list which are active are kept in the kernel's export table.
.P
Normally this 
.B etab
file is initialized with the list of all file systems named in
.B /etc/exports 
by invoking
.BR "exportfs -a" .
.P
However, administrators can choose to add and delete individual file systems
without modifying
.B /etc/exports
using
.BR exportfs .
.P
.B exportfs
and it's partner program
.B mountd
work in one of two modes, a legacy mode which applies to 2.4 and
earlier versions of the Linux kernel, and a new mode which applies to
2.6 and later versions providing the
.B nfsd
virtual filesystem has been mounted at
.B /proc/fs/nfsd
or
.BR /proc/fs/nfs .
If this filesystem is not mounted in 2.6, the legacy mode is used.
.P
In the new mode,
.B exportfs
does not give any information to the kernel but only provides it to
.B mountd
through the
.B /var/lib/nfs/etab
file.
.B mountd
will listen to requests from the kernel and will provide information
as needed.
.P
In the legacy mode,
any export requests which identify a specific host (rather than a
subnet or netgroup etc) are entered directly into the kernel's export
table as well as being written to
.BR /var/lib/nfs/etab .
Further, any mount points listed in
.B /var/lib/nfs/rmtab
which match a non host-specific export request will cause an
appropriate export entry for the host given in
.B rmtab
to be entered
into the kernel's export table.
.SH OPTIONS
.TP 
.B -a
Export or unexport all directories.
.TP
.BI "-o " options,...
Specify a list of export options in the same manner as in
.BR exports(5) .
.TP
.B -i
Ignore the
.B /etc/exports
file, so that only default options and options given on the command
line are used.
.TP
.B -r
Reexport all directories. It synchronizes /var/lib/nfs/etab
with /etc/exports. It removes entries in /var/lib/nfs/etab
which are deleted from /etc/exports, and remove any entries from the
kernel export table which are no longer valid.
.TP
.B -u
Unexport one or more directories.
.TP
.B -f
In 'new' mode, flush everything out of the kernels export table. Any
clients that are active will get new entries added by
.B mountd
when they make their next request.
.TP
.B -v
Be verbose. When exporting or unexporting, show what's going on. When
displaying the current export list, also display the list of export
options.
.SH DISCUSSION
.\" -------------------- Exporting Directories --------------------
.SS Exporting Directories
The first synopsis shows how to invoke the command when adding new
entries to the export table.  When using 
.BR "exportfs -a" ,
all directories in
.B exports(5)
are added to
.B etab
and the resulting list is pushed into the kernel.
.P
The
.I host:/path
argument specifies the directory to export along with the host or hosts to
export it to. All formats described in
.B exports(5)
are supported; to export a directory to the world, simply specify
.IR :/path .
.P
The export options for a particular host/directory pair derive from
several sources.  There is a set of default options which can be overridden by
entries in
.B /etc/exports
(unless the
.B -i
option is given).
In addition, the administrator may override any options from these sources
using the
.B -o
argument which takes a comma-separated list of options in the same fashion
as one would specify them in
.BR exports(5) .
Thus,
.B exportfs
can also be used to modify the export options of an already exported
directory.
.P
Modifications of the kernel export table used by
.B nfsd(8)
take place immediately after parsing the command line and updating the
.B etab
file.
.P
The default export options are
.BR sync,ro,root_squash,wdelay .
.\" -------------------- Unexporting Directories ------------------
.SS Unexporting Directories
The third synopsis shows how to unexported a currently exported directory.
When using
.BR "exportfs -ua" ,
all entries listed in
.B etab
are removed from the kernel export tables, and the file is cleared. This
effectively shuts down all NFS activity.
.P
To remove an export to a host, specify a
.I host:/path
pair. This deletes the specified entry from
.B etab
and removes the corresponding kernel entry (if any).
To remove one or more exports to several hosts, use
.BR "exportfs -ua" .
.P
.\" -------------------- Dumping the Export Table -----------------
.SS Dumping the Export Table 
Invoking
.B exportfs
without further options shows the current list of exported file systems.
When giving the
.B -v
option, the list of flags pertaining to each export are shown in addition.
.\" -------------------- EXAMPLES ---------------------------------
.SH EXAMPLES
The following adds all directories listed in
.B /etc/exports
to
.B /var/lib/nfs/etab
and pushes the resulting export entries into the kernel:
.P
.nf
.B "# exportfs -a
.fi
.P
To export the
.B /usr/tmp
directory to host 
.BR django ,
allowing asynchronous writes, one would do this:
.P
.nf
.B "# exportfs -o async django:/usr/tmp
.fi
.P
To unexport the
.B /usr/tmp
directory:
.P
.nf
.B "# exportfs -u django:/usr/tmp
.fi
.P
To unexport all the directories listed in
.B /etc/exports:
.P
.nf
.B "# exportfs -au
.fi
.\" -------------------- DEPENDENCIES -----------------------------
.SH DEPENDENCIES
Exporting to IP networks, DNS and NIS domains does not enable clients
from these groups to access NFS immediately; rather, these sorts of
exports are hints to
.B mountd(8)
to grant any mount requests from these clients.
This is usually not a big problem, because any existing mounts are preserved
in
.B rmtab
across reboots.
.P
When unexporting a network or domain entry, any current exports to members
of this group will be checked against the remaining valid exports and
if they themselves are no longer valid they will be removed.
.P
.\" -------------------- SEE ALSO --------------------------------
.SH SEE ALSO
.BR exports(5) ", " mountd(8)
.\" -------------------- AUTHOR ----------------------------------
.SH AUTHORS
Olaf Kirch, <okir@monad.swb.de>
.br
Neil Brown, <neilb@cse.unsw.edu.au>

