4 metastore is a tool to store the metadata of files/directories/links in
5 a file tree to a separate file and to later compare and apply the stored
6 metadata to said file tree.
8 It was written as a supplement to git which does not store all metadata,
9 making it unsuitable for e.g. storing /etc in a repository.
11 metastore can also be helpful if you want to create a tarball of a file
12 tree and make sure that "everything" (e.g. xattrs, mtime, owner, group)
13 is stored along with the files.
19 metastore stores following metadata in its files:
31 See the manual page (metastore.1) for details on usage.
37 Following sections explain internals of metastore file (.metadata).
42 CSTRING = NUL-terminated binary string
43 BSTRING(N) = binary string of length N
44 INT(N) = N byte integer in big endian byte order
55 BSTRING(10) - Magic header - "MeTaSt00r3"
56 BSTRING(8) - Version - "\0\0\0\0\0\0\0\0" (currently)
61 CSTRING - Path (absolute or relative)
62 CSTRING - Owner (owner name, not uid)
63 CSTRING - Group (group name, not gid)
65 INT(8) - Mtime (seconds)
66 INT(8) - Mtime (nanoseconds)
67 INT(2) - Mode (st_mode from struct stat st_mode AND 0177777,
68 i.e. unix permissions and type of file)
71 FOR (i = 0; i < num_xattrs; i++) {
74 BSTRING(xattrlen) - xattr value
81 The project is licensed under the terms of the GNU GPL v2 only license.
82 See LICENSE.GPLv2 file for the full license text.
88 Please use the issue tracker provided by GitHub to send bug reports
91 https://github.com/przemoc/metastore/issues