Skip to content

Store and restore metadata from a filesystem. // Unofficial continuation of David Härdeman's defunct git repo: git://git.hardeman.nu/metastore.git

License

Notifications You must be signed in to change notification settings

kmdawson/metastore

 
 

Repository files navigation

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

About

Store and restore metadata from a filesystem. // Unofficial continuation of David Härdeman's defunct git repo: git://git.hardeman.nu/metastore.git

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 93.4%
  • Makefile 3.8%
  • Shell 2.8%