This software is provided without support and without any obligation on the
part of Silicon Graphics, Inc. to assist in its use, correction, modification
or enhancement.
THIS SOFTWARE IS PROVIDED "AS IS" WITH NO WARRANTIES OF ANY KIND INCLUDING THE
WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
Note: This is for IRIX 4.0.x. rfind is included in IRIX 5.x.
Description:
Rfind is a fast client-server adaption of the find(1)
command. It has been in heavy use inside Silicon Graphics
since August, 1991. The rfind(1) command allows rapid search
of network accessible file systems using a streamlined
find(1) like syntax. Typical searches over multi-GByte
filesystems take a few seconds, or less!
The server side utility fsdump collects data (inode contents
and pathnames) from all the specified file systems on a
server, typically once an hour. It uses internal knowledge
of the EFS file system layout to collect and update a
separate database quickly and with minimum load on the
server, at typical rates of roughly 1 GByte of inuse space
per minute.
The executable fsdump must be installed with setuid or setgid
permissions sufficient to allow it to open the raw disk
slices under the specified file systems read-only.
Typically, this means that fsdump must be setuid root.
Fsdump is invoked via the crontab entry for a synthetic user
called "rfindd". It gathers inode contents using its
setuid/gid priviledges, but it gathers pathnames using
whatever priviledges are granted to the user "rfindd". This
for example, keeps my boss for noticing that I have a file
named "resume" under a mode 700 directory.
The collected data resides in /usr/lib/rfindd (which can be a
symbolic link to a directory on some other disk), and
typically requires 100 to 140 bytes per inuse inode, or
perhaps 1% to 2% of the inuse space on the specified file
systems.
The rfind daemon also runs on the server, and answers
requests from clients received via RPC, using the data
collected.
The small rfind client (102K) is installed on each client
workstation. It uses an improved find(1) like syntax to
issue requests to any rfind daemon available on the network.
Multiple clients can efficiently search large server file
systems in seconds for files matching a Boolean expression.
The most common request, to find a file by name, for
example:
rfind serverx foobar
completes in 1 to 3 seconds, listing all files named "foobar"
on the system called "serverx".
The rfind command uses a find(1) like syntax, and the above
example could also have been entered as:
rfind serverx -name foobar -print
But rfind supports various defaults to make entering such
commands easier. Difficult requests on multi-GByte file
systems sometimes take 30 seconds or a minute.
The first argument to rfind is always a specifier of the
file-system (machine name and pathname, or equivalent) to be
searched, and each invocation of rfind will only search a
single file system.
Comparison to find(1)
The rfind(1) command has the following new options that are
not available in the find(1) command: -root, -ls, -printf,
-none, -ncheck, -showdots, -stcount, -stsize, -sttotal,
-changed and -exit.
The following find(1) options are not available in rfind(1):
-cpio, -ok, -exec, -local and -mount. Since the preferred
way to create cpio archives is to use the cpio(1) command
itself, perhaps receiving filenames via a pipe from the
find(1) command, it did not seem worthwhile to maintain the
obsolete variant of cpio that is embedded in the find(1)
command. Since the rfind(1) uses rpc(3R) with minimal
authentication, the -ok and -exec options would have
presented unacceptable security compromises. Since the
rfind(1) command only works on a single file-system, the
-local and -mount options are effectively always on.
The find(1) searches in realtime on multiple file systems,
whereas rfind(1) searches the previously created data file of
a single file system.
The find(1) command is a single process utility, whereas the
rfind(1) command is the frontend of client-server utility.
Searching a large file system is many times faster with
rfind(1) than with find(1).
The -name file option of rfind(1) supports multiple
components in the pattern file.
The command line defaults simplify the use of rfind(1).
Distribution:
rfind.tar.Z - Client and server commands and configuration
Compiled and intended to be used on IRIX 4.0.5
based systems.
Installation:
As super-user, unpack the binaries and data files from
rfind.tar.Z, using the following command:
zcat rfind.tar.Z | tar xvf -
This will create a directory ./rfind, and unpack the rfind.tar.Z
archive into that subdirectory, resulting in files using an
additional 405 KBytes.
Then add the following line to your /etc/passwd (if installing
the server)
rfindd:*LK*:66:1:Rfind Daemon and Fsdump:/usr/lib/rfindd:/bin/sh
Next run the Makefile to install the files in the appropriate
location:
su
make both # installs both client and server
OR
make client # to just install the small client
OR
make server # to just install the large server
Files installed:
(showing: type, mode, uid, gid, installed path, local path)
d 755 rfindd daemon usr/lib/rfindd
f 4111 root sys usr/lib/rfindd/fsdump rfind/fsdump/fsdump
f 644 rfindd daemon usr/spool/cron/crontabs/rfindd rfind/fsdump/crontab
f 755 bin bin usr/lib/rfindd/fslist.build rfind/fsdump/fslist.build
f 755 rfindd daemon usr/lib/rfindd/runfsdump rfind/fsdump/runfsdump
f 644 rfindd daemon usr/lib/rfindd/fslist rfind/fsdump/fslist
f 644 rfindd daemon usr/lib/rfindd/fsoptions rfind/fsdump/fsoptions
f 755 bin bin usr/local/bin/rfind rfind/rfind/rfind
f 644 bin bin usr/lib/rfind.aliases rfind/rfind/rfind.aliases
f 755 rfindd daemon usr/lib/rfindd/rfindd rfind/rfindd/rfindd
f 755 bin bin usr/lib/rfindd/start.server rfind/rfindd/start.server
f 644 rfindd daemon usr/lib/rfindd/.forward rfind/rfindd/forward
f 644 rfindd daemon usr/lib/rfindd/README rfind/rfindd/README
f 644 bin bin usr/man/u_man/man1/rfind.1 rfind/man/rfind.1
f 644 bin bin usr/man/u_man/man1/rfindd.1m rfind/man/rfindd.1m
f 644 bin bin usr/man/u_man/man1/fsdump.1m rfind/man/fsdump.1m
f 644 bin bin usr/cat/u_man/cat1/rfind.z rfind/man/rfind.z
f 644 bin bin usr/cat/u_man/cat1/rfindd.z rfind/man/rfindd.z
f 644 bin bin usr/cat/u_man/cat1/fsdump.z rfind/man/fsdump.z
f 644 root sys etc/config/rfindd rfind/config/rfindd
f 755 rfindd daemon etc/init.d/rfindd rfind/init.d/rfindd
l 0 root sys etc/rc2.d/S98rfindd rfind/init.d/rfindd
l 0 root sys etc/rc0.d/K98rfindd rfind/init.d/rfindd
f 755 rfindd daemon usr/lib/rfindd/rotatelogs rfind/rotatelogs/rotatelogs
(showing: local path, comment)
rfind/fsdump/fsdump setuid root: main data collector
rfind/fsdump/crontab invokes "runfsdump" script periodically
rfind/fsdump/fslist.build first time setup of /usr/lib/rfindd/fslist
rfind/fsdump/runfsdump runs fsdump from cron on filesystems in fslist
rfind/fsdump/fslist list of local efs file systems to run fsdump on
rfind/fsdump/fsoptions options to specify on each fsdump invocation
rfind/rfind/rfind client command - put on each clients $PATH
rfind/rfind/rfind.aliases maps server nicknames to network host names
rfind/rfindd/rfindd daemon on server to answer queries
rfind/rfindd/start.server script to start rfindd and fsdump
rfind/rfindd/forward causes email to rfindd to go to postmaster
rfind/rfindd/README little roadmap, goes in /usr/lib/rfindd
rfind/man/rfind.1 end user man page (long)
rfind/man/rfindd.1m simply identifies rfindd
rfind/man/fsdump.1m server installation/configuration
rfind/man/rfind.z (packed) end user man page (long)
rfind/man/rfindd.z (packed) simply identifies rfindd
rfind/man/fsdump.z (packed) server installation/configuration
rfind/config/rfindd /etc/chkconfig control of rfindd/fsdump
rfind/init.d/rfindd system startup/shutdown for rfindd/fsdump
rfind/rotatelogs/rotatelogs utility to rotate /usr/lib/rfindd/*.log files
Comments:
email to pj@sgi.com
|