| .\" Copyright (c) 1989, 1990, 1993 |
| .\" The Regents of the University of California. All rights reserved. |
| .\" |
| .\" Redistribution and use in source and binary forms, with or without |
| .\" modification, are permitted provided that the following conditions |
| .\" are met: |
| .\" 1. Redistributions of source code must retain the above copyright |
| .\" notice, this list of conditions and the following disclaimer. |
| .\" 2. Redistributions in binary form must reproduce the above copyright |
| .\" notice, this list of conditions and the following disclaimer in the |
| .\" documentation and/or other materials provided with the distribution. |
| .\" 4. Neither the name of the University nor the names of its contributors |
| .\" may be used to endorse or promote products derived from this software |
| .\" without specific prior written permission. |
| .\" |
| .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| .\" SUCH DAMAGE. |
| .\" |
| .\" From: @(#)mtree.8 8.2 (Berkeley) 12/11/93 |
| .\" $FreeBSD$ |
| .\" |
| .Dd August 20, 2007 |
| .Dt MTREE 5 |
| .Os |
| .Sh NAME |
| .Nm mtree |
| .Nd format of mtree dir hierarchy files |
| .Sh DESCRIPTION |
| The |
| .Nm |
| format is a textual format that describes a collection of filesystem objects. |
| Such files are typically used to create or verify directory hierarchies. |
| .Ss General Format |
| An |
| .Nm |
| file consists of a series of lines, each providing information |
| about a single filesystem object. |
| Leading whitespace is always ignored. |
| .Pp |
| When encoding file or pathnames, any backslash character or |
| character outside of the 95 printable ASCII characters must be |
| encoded as a a backslash followed by three |
| octal digits. |
| When reading mtree files, any appearance of a backslash |
| followed by three octal digits should be converted into the |
| corresponding character. |
| .Pp |
| Each line is interpreted independently as one of the following types: |
| .Bl -tag -width Cm |
| .It Signature |
| The first line of any mtree file must begin with |
| .Dq #mtree . |
| If a file contains any full path entries, the first line should |
| begin with |
| .Dq #mtree v2.0 , |
| otherwise, the first line should begin with |
| .Dq #mtree v1.0 . |
| .It Blank |
| Blank lines are ignored. |
| .It Comment |
| Lines beginning with |
| .Cm # |
| are ignored. |
| .It Special |
| Lines beginning with |
| .Cm / |
| are special commands that influence |
| the interpretation of later lines. |
| .It Relative |
| If the first whitespace-delimited word has no |
| .Cm / |
| characters, |
| it is the name of a file in the current directory. |
| Any relative entry that describes a directory changes the |
| current directory. |
| .It dot-dot |
| As a special case, a relative entry with the filename |
| .Pa .. |
| changes the current directory to the parent directory. |
| Options on dot-dot entries are always ignored. |
| .It Full |
| If the first whitespace-delimited word has a |
| .Cm / |
| character after |
| the first character, it is the pathname of a file relative to the |
| starting directory. |
| There can be multiple full entries describing the same file. |
| .El |
| .Pp |
| Some tools that process |
| .Nm |
| files may require that multiple lines describing the same file |
| occur consecutively. |
| It is not permitted for the same file to be mentioned using |
| both a relative and a full file specification. |
| .Ss Special commands |
| Two special commands are currently defined: |
| .Bl -tag -width Cm |
| .It Cm /set |
| This command defines default values for one or more keywords. |
| It is followed on the same line by one or more whitespace-separated |
| keyword definitions. |
| These definitions apply to all following files that do not specify |
| a value for that keyword. |
| .It Cm /unset |
| This command removes any default value set by a previous |
| .Cm /set |
| command. |
| It is followed on the same line by one or more keywords |
| separated by whitespace. |
| .El |
| .Ss Keywords |
| After the filename, a full or relative entry consists of zero |
| or more whitespace-separated keyword definitions. |
| Each such definition consists of a key from the following |
| list immediately followed by an '=' sign |
| and a value. |
| Software programs reading mtree files should warn about |
| unrecognized keywords. |
| .Pp |
| Currently supported keywords are as follows: |
| .Bl -tag -width Cm |
| .It Cm cksum |
| The checksum of the file using the default algorithm specified by |
| the |
| .Xr cksum 1 |
| utility. |
| .It Cm contents |
| The full pathname of a file that holds the contents of this file. |
| .It Cm flags |
| The file flags as a symbolic name. |
| See |
| .Xr chflags 1 |
| for information on these names. |
| If no flags are to be set the string |
| .Dq none |
| may be used to override the current default. |
| .It Cm gid |
| The file group as a numeric value. |
| .It Cm gname |
| The file group as a symbolic name. |
| .It Cm ignore |
| Ignore any file hierarchy below this file. |
| .It Cm link |
| The target of the symbolic link when type=link. |
| .It Cm md5 |
| The MD5 message digest of the file. |
| .It Cm md5digest |
| A synonym for |
| .Cm md5 . |
| .It Cm mode |
| The current file's permissions as a numeric (octal) or symbolic |
| value. |
| .It Cm nlink |
| The number of hard links the file is expected to have. |
| .It Cm nochange |
| Make sure this file or directory exists but otherwise ignore all attributes. |
| .It Cm ripemd160digest |
| The |
| .Tn RIPEMD160 |
| message digest of the file. |
| .It Cm rmd160 |
| A synonym for |
| .Cm ripemd160digest . |
| .It Cm rmd160digest |
| A synonym for |
| .Cm ripemd160digest . |
| .It Cm sha1 |
| The |
| .Tn FIPS |
| 160-1 |
| .Pq Dq Tn SHA-1 |
| message digest of the file. |
| .It Cm sha1digest |
| A synonym for |
| .Cm sha1 . |
| .It Cm sha256 |
| The |
| .Tn FIPS |
| 180-2 |
| .Pq Dq Tn SHA-256 |
| message digest of the file. |
| .It Cm sha256digest |
| A synonym for |
| .Cm sha256 . |
| .It Cm size |
| The size, in bytes, of the file. |
| .It Cm time |
| The last modification time of the file. |
| .It Cm type |
| The type of the file; may be set to any one of the following: |
| .Pp |
| .Bl -tag -width Cm -compact |
| .It Cm block |
| block special device |
| .It Cm char |
| character special device |
| .It Cm dir |
| directory |
| .It Cm fifo |
| fifo |
| .It Cm file |
| regular file |
| .It Cm link |
| symbolic link |
| .It Cm socket |
| socket |
| .El |
| .It Cm uid |
| The file owner as a numeric value. |
| .It Cm uname |
| The file owner as a symbolic name. |
| .El |
| .Pp |
| .Sh SEE ALSO |
| .Xr cksum 1 , |
| .Xr find 1 , |
| .Xr mtree 8 |
| .Sh BUGS |
| The |
| .Fx |
| implementation of mtree does not currently support |
| the |
| .Nm |
| 2.0 |
| format. |
| The requirement for a |
| .Dq #mtree |
| signature line is new and not yet widely implemented. |
| .Sh HISTORY |
| The |
| .Nm |
| utility appeared in |
| .Bx 4.3 Reno . |
| The |
| .Tn MD5 |
| digest capability was added in |
| .Fx 2.1 , |
| in response to the widespread use of programs which can spoof |
| .Xr cksum 1 . |
| The |
| .Tn SHA-1 |
| and |
| .Tn RIPEMD160 |
| digests were added in |
| .Fx 4.0 , |
| as new attacks have demonstrated weaknesses in |
| .Tn MD5 . |
| The |
| .Tn SHA-256 |
| digest was added in |
| .Fx 6.0 . |
| Support for file flags was added in |
| .Fx 4.0 , |
| and mostly comes from |
| .Nx . |
| The |
| .Dq full |
| entry format was added by |
| .Nx . |