blob: 0249433c10db65f4b91c9a418da82da540893f46 (
plain)
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
|
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.
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 file (.metadata).
### 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 only license.
See LICENSE.GPLv2 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
|