dumpdsf.py - DirectoryStorage Exploration Tool
Usage:
dumpdsf.py FILENAME [FILENAME...]
FILENAME
The name of a file to dump
Operation
This tool can be used to dump the internal structure of any DirectoryStorage file. This structure is defined in doc/fileformats.txt.
This tool is useful for exploring, and fault-finding. Example Output:
A $ dumpdsf.py o000/000/000/001/A771.0349DEA41A25853B
o000/000/000/001/A771.0349DEA41A25853B
data for oid 000000000001A771 rev 0349DEA41A25853B
proper filename o000/000/000/001/A771.0349DEA41A25853B
transaction
timestamp Mon Dec 30 10:12:06 2002
filename t034/9DE.A41A25853B
previous rev
rev 0349DEA19D6C7919
filename o000/000/000/001/A771.0349DEA19D6C7919
pickle '((U\nOFS.Folderq\x01U\x06Folderq\x02tq\x03Nt.}q\x04(U\x02ao'
references
oid 000000000001E295 at o000/000/000/001/E295.c
oid 000000000001E2F9 at o000/000/000/001/E2F9.c
A $ dumpdsf.py t034/9DE.A41A25853B
t034/9DE.A41A25853B
transaction 0349DEA41A25853B
timestamp Mon Dec 30 10:12:06 2002
proper filename t034/9DE.A41A25853B
user ' tdickenson'
description '/extest/addDTMLDocument'
objects modified in this transaction
oid 000000000001E2F9 at o000/000/000/001/E2F9.0349DEA41A25853B
oid 000000000001A771 at o000/000/000/001/A771.0349DEA41A25853B
A $ dumpdsf.py o000/000/000/001/E2F9.0349DEA41A25853B
o000/000/000/001/E2F9.0349DEA41A25853B
data for oid 000000000001E2F9 rev 0349DEA41A25853B
proper filename o000/000/000/001/E2F9.0349DEA41A25853B
transaction
timestamp Mon Dec 30 10:12:06 2002
filename t034/9DE.A41A25853B
previous rev
rev 0000000000000000
filename o000/000/000/001/E2F9.0000000000000000
pickle '((U\x10OFS.DTMLDocumentq\x01U\x0cDTMLDocumentq\x02tq'
Limitations
- Filenames in its output assume you are using chunky format.
- Some special case values for some fields are not fully decoded. That last example above shows a previous revision field of all zeros. That means this is the first revision of the object, therefore it is misleading for it to also display a previous revision filename.
- It dumps the first 40 bytes of a pickle. This is usually enough to be able to pick out the class name, even if you cant read the rest of the pickle.
- Probably many more.