EXPORTFS(4)EXPORTFS(4)

NAME

exportfs, srvfs – file server plumbing

SYNOPSIS

exportfs [ -dsR ] [ -m msize ] [ -r root ] [ -P patternfile ] [ -S srvfile ]

srvfs [ -dR ] [ -p perm ] [ -P patternfile ] [ -e exportprog ] name path

DESCRIPTION

Exportfs is a user level file server that allows Plan 9 cpu servers, rather than file servers, to export portions of a name space. It is usually started by other programs such as rcpu(1) after a secure channel has been established. Exportfs then acts as a relay file server: operations in the imported file tree are executed on the remote server and the results returned. This gives the appearance of exporting a name space from a remote machine into a local file tree.

The options are:

-d

Log all 9P traffic to standard error.  

-P patternfile

Restrict the set of exported files. Patternfile contains one regular expression per line, to be matched against path names relative to the current working directory and starting with /. For a file to be exported, all lines with a prefix + must match and all those with prefix - must not match.  

-R

Make the served name space read only.  

-r root

Serve the name space rooted at root.  

-S service

Serve the result of mounting service. A separate mount is used for each attach(5) message, to correctly handle servers in which each mount corresponds to a different client e.g.,( rio(4)).  

-s

equivalent to -r /; kept for compatibility.  

-m msize

Set the maximum message size that exportfs should offer to send (see version(5)); this helps tunneled 9P connections to avoid unnecessary fragmentation.  

Srvfs invokes exportprog (default /bin/exportfs) to create a mountable file system from a name space and posts it at /srv/name, which is created with mode perm (default 0600). The name space is the directory tree rooted at path. The -d, -P, and -R options, if present, are relayed to exportprog.

EXAMPLES

To export the archive of one user for one month, except for secrets,

 

cd /n/dump
echo '+ ^/(2003(/10..(/usr(/glenda/?)?)?)?)?' > /tmp/pattern
echo '- \.(aes|pgp)$' >> /tmp/pattern
exportfs -P /tmp/pattern

Use srvfs to enable mounting of an FTP file system (see ftpfs(4)) in several windows, or to publish a /proc (see proc(3)) with a broken process so a remote person may debug the program:

 

srvfs ftp /n/ftp
srvfs broke /mnt/term/proc

Use srvfs to obtain a copy of a service to be manipulated directly by a user program like nfsserver(8):

 

srvfs nfs.boot /srv/boot
aux/nfsserver -f /srv/nfs.boot

Use srvfs to spy on all accesses to a particular subtree:

 

srvfs -d spy /
tail -f /tmp/exportdb &
mount /srv/spy /n/spy
cd /n/spy; ls

SOURCE

/sys/src/cmd/exportfs
/sys/src/cmd/srvfs.c

SEE

rcpu(1)