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.