APPLYLOG(8) APPLYLOG(8)
NAME
applylog, updatelog - log-based updates
SYNOPSIS
install/applylog [ -c ] [ -e ] [ -n ] [ -s ] [ -u ] [ -g ] [
-v ] [ -T timefile ] clientlog clientroot serverroot [ path
... ]
install/updatelog [ -p proto ] [ -r root ] [ -t now gen ] [
-c ] [ -x path ] log [ path ... ]
DESCRIPTION
These two commands allow distribution of updates (eg, to the
Inferno tree) based on a log of changes since a previous
update. Notionally, one server system is the primary for a
set of files, and one or more client systems maintain repli-
cas of that set, although in some applications server and
client might be the same machine.
Applylog is run on a client, to update the file tree rooted
at clientroot. The server's version of the tree is rooted at
serverroot on the client, typically by being mounted there
(see bind(1)). Applylog takes the current state of the
replica from the entries in clientlog, and applies a set of
changes represented by log entries read from its standard
input. Those entries are provided by the server. Each
change is examined to see whether the file to which it
applies is in the expected state. If so, the change is
applied without comment; otherwise, there is a conflict
caused by a local change to the replica tree independently
from the primary. By default, applylog diagnoses the con-
flict and does not apply the change. It accepts the follow-
ing options:
-c Resolve inconsistencies in favour of the client: leave
the replica as is.
-e Exit with an error status on any error, including
inconsistency between client and server.
-n Print on standard output a list of changes that would
be made, and list any conflicts, but do not change the
tree or update the log.
-s Resolve inconsistencies in favour of the server: make
the replica match the server's state.
-u Make file ownership in the replica match that on the
server.
Page 1 Plan 9 (printed 11/2/25)
APPLYLOG(8) APPLYLOG(8)
-g Make group ownership in the replica match that on the
server.
-v Print a summary of each log entry as it is examined.
-T timefile
Read a time and sequence number from timefile and apply
only log entries with stamps greater than that. On
successful completion, if the -n option is not given,
update the timefile with the stamp of the last log
entry processed successfully.
The scope of an update in a tree can be restricted to a par-
ticular set of paths listed on the command line. They
should all be relative path names.
Updatelog is run on a server to produce a sequence of log
entries representing changes to the primary tree since a
previous log was produced. It can also be run on a client
to see how its replica state differs from that recorded in a
log. It accepts the following options:
-p proto
Use proto as the prototype for the file system, as
described by proto(6) (default: /lib/proto/all).
-r root
The replica is rooted at root (default: the current
directory, .).
-t now gen
Make log entries use time now and initial sequence num-
ber gen. The defaults are the current time and 0.
-c Produce output only for content and metadata changes,
not additions or deletions.
-x path
Exclude path and its subtrees from consideration.
By default, updatelog produces log entries describing
changes, additions and deletions to all files in root but
the scope can be limited by giving a different proto,
explicitly listing trees to consider as paths on the command
line, and by giving one or more -x options to exclude par-
ticular paths, in any desired combination.
Log file format
A log file is a text file with one line representing each
change to the tree. Each line has the form:
time gen verb path serverpath mode uid gid mtime length
Page 2 Plan 9 (printed 11/2/25)
APPLYLOG(8) APPLYLOG(8)
[ sum ... ]
where:
time, gen
are decimal numbers that order the sequence of
requests: time is typically the time in seconds of
the epoch at which the entry was made; gen is a
monotonically increasing sequence number
verb is an action:
a add file path
c change the contents of file path
d delete path
m change the metadata (permissions, ownership)
for path
path the name of the file on the client
serverpath
the name of the file on the server with the con-
tents for path, or simply `-' when the server and
client file names are the same
mode, uid, gid, length, mtime
the resulting metadata (except for d where the
metadata is that for the file to be deleted)
sum is the MD5 checksum of the file's contents
SOURCE
/appl/cmd/install/applylog.b
/appl/cmd/install/logs.b
/appl/cmd/install/updatelog.b
SEE ALSO
fs(1), kfs(4), proto(6)
Page 3 Plan 9 (printed 11/2/25)