A transport-agnostic, filesystem metadata manifest system
This project is a staging area for experiments in providing transport agnostic metadata storage.
Please see https://github.com/opencontainers/specs/issues/11 for more details.
A continuity manifest encodes filesystem metadata in Protocol Buffers. Please refer to proto/manifest.proto.
Build:
$ make
Create a manifest (of this repo itself):
$ ./bin/continuity build . > /tmp/a.pb
Dump a manifest:
$ ./bin/continuity ls /tmp/a.pb ... -rw-rw-r-- 270 B /.gitignore -rw-rw-r-- 88 B /.mailmap -rw-rw-r-- 187 B /.travis.yml -rw-rw-r-- 359 B /AUTHORS -rw-rw-r-- 11 kB /LICENSE -rw-rw-r-- 1.5 kB /Makefile ... -rw-rw-r-- 986 B /testutil_test.go drwxrwxr-x 0 B /version -rw-rw-r-- 478 B /version/version.go
Verify a manifest:
$ ./bin/continuity verify . /tmp/a.pb
Break the directory and restore using the manifest:
$ chmod 777 Makefile $ ./bin/continuity verify . /tmp/a.pb 2017/06/23 08:00:34 error verifying manifest: resource "/Makefile" has incorrect mode: -rwxrwxrwx != -rw-rw-r-- $ ./bin/continuity apply . /tmp/a.pb $ stat -c %a Makefile 664 $ ./bin/continuity verify . /tmp/a.pb
If you change the proto file you will need to rebuild the generated Go with go generate
.
$ go generate ./proto
continuity is a containerd sub-project, licensed under the Apache 2.0 license. As a containerd sub-project, you will find the:
information in our containerd/project
repository.