summaryrefslogtreecommitdiff
path: root/metastore.md
blob: 2d2ba831c4ce6c81693f2c2984d410ca17a0fc6c (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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# metastore(1) January 2016 | General Commands Manual

## NAME

metastore - stores and restores filesystem metadata


## SYNOPSIS

**metastore** *ACTION* \[*OPTION...*\] \[*PATH...*\]


## DESCRIPTION

Stores or restores metadata (owner, group, permissions, xattrs and optionally
mtime) for a filesystem tree. This can be used to preserve the metadata in
situations where it is usually not stored ([git(1)](GIT) and [tar(1)](TAR) for
example) or as a tripwire like mechanism to detect any changes to metadata.
Note that e.g. SELinux stores its labels in xattrs so care should be taken when
applying stored metadata to make sure that system security is not compromised.


## ACTIONS

**-c, \-\-compare**

:	Shows the difference between the stored and real metadata.

**-s, \-\-save**

:	Saves the current metadata to `./.metadata` or to the specified file
	(see `--file` option below).

**-a, \-\-apply**

:	Attempts to apply the stored metadata to the file system.

**-d, \-\-dump**

:	Dumps stored (if no *PATH* is given) or real metadata (if *PATH* is
	present, e.g. `./`) in human-readable form.

	This action is meant only as a helpful debugging facility or merge
	conflict helper. Do not ever compare its output generated using
	different metastore version. Do not rely on current output format
	(especially in batch scripts), because it may change in future without
	prior notice.

**-h, \-\-help**

:	Prints a help message and exits.


## OPTIONS

**-v, \-\-verbose**

:	Causes metastore to print more verbose messages. Can be repeated more
	than once for even more verbosity.

**-q, \-\-quiet**

:	Causes metastore to print less verbose messages. Can be repeated more
	than once for even less verbosity.

**-m, \-\-mtime**

:	Causes metastore to also take mtime into account for the compare or
	apply actions.

**-e, \-\-empty-dirs**

:	Also attempts to recreate missing empty directories. May be useful where
	empty directories are not tracked (e.g. by [git(1)](GIT) or
	[cvs(1)](CVS)). Only works in combination with the `--apply` option.

**-E, \-\-remove-empty-dirs**

:	Also attempts to remove empty directories missing from the metadata. May
	be useful where empty directories are not tracked (e.g. by [git(1)](GIT)
	or [cvs(1)](CVS)). Only works in combination with the `--apply` option.

**-g, \-\-git**

:	Prevents metastore from omitting `.git` directories.

**-f \<file\>, \-\-file \<file\>**

:	Causes the metadata to be saved, read from the specified file rather
	than `./.metadata`.


## PATHS

If no path is specified, `metastore` will use the current directory as the basis
for the actions. This is the recommended way of executing metastore.
Alternatively, one or more paths can be specified and they will each be
examined. Later invocations should be made using the exact same paths to ensure
that the stored metadata is interpreted correctly.


## AUTHORS

`metastore` was created by David Härdeman in 2007-2008. Now it is maintained by
Przemysław Pawełczyk. All source code contributors are listed in the `AUTHORS`
file.


[CVS]: man:cvs(1)
[GIT]: man:git(1)
[TAR]: man:tar(1)