forked from przemoc/metastore
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
95 lines (59 loc) · 2.09 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
metastore
=========
metastore is a tool to store the metadata of files/directories/links in
a file tree to a separate file and to later compare and apply the stored
metadata to said file tree.
It was written as a supplement to git which does not store all metadata,
making it unsuitable for e.g. storing /etc in a repository.
metastore can also be helpful if you want to create a tarball of a file
tree and make sure that "everything" (e.g. xattrs, mtime, owner, group)
is stored along with the files.
This metastore is unofficial continuation of the original metastore
application created by David Härdeman (who no longer maintains it).
Stored metadata
---------------
metastore stores following metadata in its files:
- owner,
- group,
- permissions,
- xattrs,
- mtime - optionally.
Usage
-----
See the manual page (metastore.1) for details on usage.
File format
-----------
Following sections explain internals of .metastore files.
### Data types
CSTRING = NUL-terminated binary string
BSTRING(N) = binary string of length N
INT(N) = N byte integer in big endian byte order
### File layout
HEADER
N * ENTRY
### HEADER format
BSTRING(10) - Magic header - "MeTaSt00r3"
BSTRING(8) - Version - "\0\0\0\0\0\0\0\0" (currently)
### ENTRY format
CSTRING - Path (absolute or relative)
CSTRING - Owner (owner name, not uid)
CSTRING - Group (group name, not gid)
INT(8) - Mtime (seconds)
INT(8) - Mtime (nanoseconds)
INT(2) - Mode (st_mode from struct stat st_mode AND 0177777,
i.e. unix permissions and type of file)
INT(4) - num_xattrs
FOR (i = 0; i < num_xattrs; i++) {
CSTRING - xattr name
INT(4) - xattrlen
BSTRING(xattrlen) - xattr value
}
License
-------
The project is licensed under the terms of the GNU GPL v2 license.
See LICENSE file for the full license text.
Bug reports
-----------
Please use the issue tracker provided by GitHub to send bug reports
or feature requests.
https://github.com/przemoc/metastore/issues