Hi, camtool is indeed not the most user-friendly of our tools. When I forget how it works, (as I just had now), I just "reverse-engineer" it. That's to say, if you create (mkdir, cp) new nodes in roots, you'll see (with some devcam get, devcam tool describe, or in the web UI) that the relation created is a camliPath. Same goes for the children of these nodes. So:
devcam put permanode -> sha1-500520ae4269b7ac7b20f0a42ba57650450ddb02 devcam put attr camliRoot sha1-500520ae4269b7ac7b20f0a42ba57650450ddb02 someRootName devcam put permanode -> sha1-c8db36279ee03f5daf69a3d2885ef5d8c0111f05 devcam put attr sha1-500520ae4269b7ac7b20f0a42ba57650450ddb02 camliPath:TODO.txt sha1-c8db36279ee03f5daf69a3d2885ef5d8c0111f05 devcam put file /home/mpl/docs/TODO.txt -> sha1-4c8b980f2c5faa49e687c8f1235ed17b2818691c devcam put attr sha1-c8db36279ee03f5daf69a3d2885ef5d8c0111f05 camliContent sha1-4c8b980f2c5faa49e687c8f1235ed17b2818691c ll /tmp/cammount-dir/roots/someRootName/TODO.txt -rw------- 1 mpl mpl 1654 Oct 1 19:14 /tmp/cammount-dir/roots/someRootName/TODO.txt I'd have to recheck, but I don't think the navigation from the roots are following other relations than camliPath and camliContent, so they're not following the static-set relation that you get betwen a dir and its children when you camput a directory. And I don't know what's the roadmap on that. As (I think) you have found out, you can still browse a directory if you know its hash, as in: devcam put file /home/mpl/docs -> sha1-339cf73c02ea5981b71f3aeaaf8864dbfbedafa5 cd /tmp/cammount-dir/sha1-339cf73c02ea5981b71f3aeaaf8864dbfbedafa5 hth, Mathieu On 1 October 2016 at 18:52, Theodore Ts'o <[email protected]> wrote: > I'm really confused about how to take a backup and make it available in > Roots so I can browse it using the cammount. I don't know if this releated > to the fact that I'm using ./bin/devcam, but the documentation on how Roots > and work is very sparse. :-( > > OK, so starting with "./bin/devcam server --wipe" in one window, I then do a > backup: > > % ./bin/devcam put file /tmp/test-dir > > So I get back a sha1-sig which looks like this: > > > % ./bin/devcam tool describe sha1-0609bc86627d0fa3067d45c09ede479c7e8643f8 > { > "meta": { > "sha1-01b8821894b8de827984b1b9f59671bf0cffc036": { > "blobRef": "sha1-01b8821894b8de827984b1b9f59671bf0cffc036", > "camliType": "directory", > "size": 306, > "dir": { > "fileName": "subdir", > "size": 1, > "wholeRef": null > }, > "dirChildren": [ > "sha1-9999264baa2c936c30b509be0f0f77c1e39615f6" > ] > }, > "sha1-0609bc86627d0fa3067d45c09ede479c7e8643f8": { > "blobRef": "sha1-0609bc86627d0fa3067d45c09ede479c7e8643f8", > "camliType": "directory", > "size": 309, > "dir": { > "fileName": "test-dir", > "size": 3, > "wholeRef": null > }, > "dirChildren": [ > "sha1-01b8821894b8de827984b1b9f59671bf0cffc036", > "sha1-7ecba772756f1b4fbe0f3179cc5ad02e087aad75", > "sha1-8256107f4be52db012e4e80d2e43a71b542769d7" > ] > }, > "sha1-7ecba772756f1b4fbe0f3179cc5ad02e087aad75": { > "blobRef": "sha1-7ecba772756f1b4fbe0f3179cc5ad02e087aad75", > "camliType": "file", > "size": 352, > "file": { > "fileName": "issue", > "size": 36, > "time": "2016-10-01T14:21:26.091166128Z", > "wholeRef": "sha1-309e70c09b04eb5e144b29b21e5ecec2d3289628" > } > }, > "sha1-8256107f4be52db012e4e80d2e43a71b542769d7": { > "blobRef": "sha1-8256107f4be52db012e4e80d2e43a71b542769d7", > "camliType": "file", > "size": 352, > "file": { > "fileName": "motd", > "size": 286, > "time": "2016-10-01T14:21:29.771162244Z", > "wholeRef": "sha1-8b55aac644e9e6f2701805584cc391ff81d3ecec" > } > }, > "sha1-9999264baa2c936c30b509be0f0f77c1e39615f6": { > "blobRef": "sha1-9999264baa2c936c30b509be0f0f77c1e39615f6", > "camliType": "file", > "size": 350, > "file": { > "fileName": "date", > "size": 29, > "time": "2016-10-01T15:09:46.36563753Z", > "wholeRef": "sha1-fc866bc41a833bed829bf1580ce11113580fd4b0" > } > } > } > } > > so the first weird thing is that the docs imply that this should work: > > % ./bin/devcam mount sha1-0609bc86627d0fa3067d45c09ede479c7e8643f8 > Cammount running with mountpoint /tmp/cammount-dir. Press 'q' <enter> or > ctrl-c to shut down. > 2016/10/01 12:32:19 root specified is not a blobref or name of a root: > "/tmp/cammount-dir" > > Hmm... so it claims it wants the "name of a root". how about the > pre-created dev-pics-root? > > % ./bin/devcam mount /dev-pics-root > Cammount running with mountpoint /tmp/cammount-dir. Press 'q' <enter> or > ctrl-c to shut down. > 2016/10/01 12:33:45 root specified is not a blobref or name of a root: > "/tmp/cammount-dir" > > Nope. OK, so I'll just use "./bin/devcam mount" and get the full default > top-level: > > % ls /tmp/cammount-dir > total 0 > 0 at/ 0 recent/ 0 sha1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ 0 > WELCOME.txt > 0 date/ 0 roots/ 0 tag/ > % ls /tmp/cammount-dir/roots > total 0 > 0 dev-pics-root/ > > Let's create a new root: > > % ./bin/devcam put permanode 2> /dev/null > sha1-19d8e08e5660275357b072edae6741b14db0c882 > % ./bin/devcam put attr sha1-19d8e08e5660275357b072edae6741b14db0c882 title > testroot 2> /dev/null > sha1-608d3485eb205e41e3db9ba2c7b498eff1797f3f > % ./bin/devcam put attr sha1-19d8e08e5660275357b072edae6741b14db0c882 > camliRoot testroot 2> /dev/null > sha1-10b885cd8630331db50648cc10242cb6e0edadb1 > > % ls /tmp/cammount-dir/roots/ > total 0 > 0 dev-pics-root/ 0 testroot/ > > Yay! It works. Now I try connecting the backup I made above > (sha1-0609bc86627d0fa3067d45c09ede479c7e8643f8) with the testroot.... and > everything fails. My best guess, which I fully expected to work was: > > % ./bin/devcam put attr sha1-19d8e08e5660275357b072edae6741b14db0c882 > camliPath:testdir sha1-0609bc86627d0fa3067d45c09ede479c7e8643f8 > sha1-aaf244b34b412331789caa86eaf09443468a22ee > > But alas, no dice: > > % ./bin/devcam mount > Cammount running with mountpoint /tmp/cammount-dir. Press 'q' <enter> or > ctrl-c to shut down. > > <in another window> > % ls /tmp/cammount-dir/roots/testroot/ > total 0 > > Argh, so let's try creating via fuse: > > % mkdir -p /tmp/cammount-dir/roots/testroot/foo/bar/baz > > <back to the original window after shutting down cammount> > > % ./bin/devcam tool describe sha1-19d8e08e5660275357b072edae6741b14db0c882{ > "meta": { > "sha1-19d8e08e5660275357b072edae6741b14db0c882": { > "blobRef": "sha1-19d8e08e5660275357b072edae6741b14db0c882", > "camliType": "permanode", > "size": 562, > "permanode": { > "attr": { > "camliPath:foo": [ > "sha1-fc4e1bf59ba29d2e13f73d685c09d2cd26674bdc" > ], > "camliPath:testdir": [ > "sha1-0609bc86627d0fa3067d45c09ede479c7e8643f8" > ], > "camliRoot": [ > "testroot" > ], > "title": [ > "testroot" > ] > }, > "modtime": "2016-10-01T16:44:00.886392008Z" > } > } > } > } > > Hmm, let's look at what the references for "foo" and "testdir" look like: > > % ./bin/devcam tool describe sha1-fc4e1bf59ba29d2e13f73d685c09d2cd26674bdc > { > "meta": { > "sha1-fc4e1bf59ba29d2e13f73d685c09d2cd26674bdc": { > "blobRef": "sha1-fc4e1bf59ba29d2e13f73d685c09d2cd26674bdc", > "camliType": "permanode", > "size": 562, > "permanode": { > "attr": { > "camliNodeType": [ > "directory" > ], > "camliPath:bar": [ > "sha1-b0dc6213dfbc7b004304fe46ebd667a9529dd928" > ], > "title": [ > "foo" > ] > }, > "modtime": "2016-10-01T16:44:00.905961518Z" > } > } > } > } > > and the description of "testdir" is above. > > And the first thing I notice is they look totally difference. For the > subdir created via fuse, it uses camliPath to name the subdirectories. But > in testdir, the directory contents are described very differently: > > "sha1-0609bc86627d0fa3067d45c09ede479c7e8643f8": { > "blobRef": "sha1-0609bc86627d0fa3067d45c09ede479c7e8643f8", > "camliType": "directory", > "size": 309, > "dir": { > "fileName": "test-dir", > "size": 3, > "wholeRef": null > }, > "dirChildren": [ > "sha1-01b8821894b8de827984b1b9f59671bf0cffc036", > "sha1-7ecba772756f1b4fbe0f3179cc5ad02e087aad75", > "sha1-8256107f4be52db012e4e80d2e43a71b542769d7" > ] > }, > > It doesn't have the camliPath attributes at all! > > Yet cammount can understand the other scheme, so long as I remember the sha1 > hash: > > % ls /tmp/cammount-dir/sha1-0609bc86627d0fa3067d45c09ede479c7e8643f8 > total 0 > 0 issue 0 motd 0 subdir/ > > But of course I don't want to get into the business of memorizing sha1 > hashes. And if I create a permanode, e.g: > > % ./bin/devcam put file --permanode /tmp/test-dir > > The permanode doesn't show up in FUSE hierarchy exported by cammount > (although it does show up in the web ui). > > Argh!!!! Very frustrating. > > What am I missing? > > Thanks, > > -- Ted > > > > -- > You received this message because you are subscribed to the Google Groups > "Camlistore" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Camlistore" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
