The ZODB is an append only file system so truncating works just find. I
have used truncation occasionally to fix a coddled ZODB. You can use any
of the standard tools (fsrecover, for example) to find the transactions
and their dates. The position in the file is part of the fsrecover
output. Pick a date and truncate the Data.fs to the specified position
and you should be good to go. You'll want to kill all the index files
before you take the truncated file live to ensure they get rebuilt on
Alternatively you could use Tres' technique--just add a new disk to your
system. For a few hundred dollars you could have an additional 400GB!
On Wed, 21 Mar 2007, Chris Withers wrote:
> Tres Seaver wrote:
> > 1. Open the existing file in time-travel mode (readonly, so that it
> > loads no transactions later than the given point). The 'stop'
> > parameter to the FileStorage initializer is the one which
> > triggers time-travel.
> > 2. Open a new, writable filestorage.
> > 3. Run 'copyTransactionsFrom' on the new storage, passing the old,
> > and then close the storages.
> > 4. Restart his Zope with the new storage.
> I don't have the 60GB of free disk space required to do this :-(
> I'm hoping for some means to just lop transactions off the end of the
> Data.fs until I get to the point in time I want...
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org