On Wed, May 02, 2007 at 03:11:03PM +0200, Thorsten B?ker wrote: > Dear all, > But wondering about the heavily increased amount of partition in use, I > noticed that my call of rsync lacked of the "--delete" attribute. In > consequence the restored mailbox directories include not only the > messages, which should be in the inbox, but all files beeing in the > directories during the backup cronjobs. (My mailbox sizes ~700 MB > instead of ~100 MB.) > > With regard to backup performance I'd like to clean up the relevant > directories by ensuring uniformity of the inbox according to the Cyrus > mailbox database and the files in the mailbox directory. > > In the wiki I found Andrew's collection of scripts [2] and had a try. My > intention is/was to firstly manually select mailbox directories, which > contain much too much unneeded files -- mainly mailboxes used via imap. > After temporarily stopping mail delivery and mailbox access, each chosen > mailbox might be renamed and its contents copied to a new mailbox of its > initial name. After starting mail delivery and access again, the > mailboxes and directories containing wrong fails might be deleted at all. > > But, as usual, the idea doesn't work yet. A first try to copy the > existing mailbox "thorsten" to "thorsten_neu" leads to the following:
I think I've posted my "Cyrus::IndexFile" perl module to the list before, but I'll attach it here as well. This allows you to parse through indexes a lot more efficiently, and 'cyr_dbtool' (see the patches at http://cyrus.brong.fastmail.fm/) is great for seeing the contents of mailboxes.db. Unfortunately, most of our tools are only for cyrus 2.3+. We were running a fairly recent CVS even back when I started work on dbtool, and that was one of my first projects at FastMail. I've had to do the same job, and I did it by reading the directory contents and listing UIDs via IMAP, then removing any that didn't match. There's no need to move anything. $imap->select("INBOX.Trash"); ls /var/spool/imap/b/user/brong/Trash/ You'll need some logic to map from mailbox names to on-disk paths of course, but I think this is a cleaner solution than the copying one, and as other people have noted, this doesn't break flags (including \Sent) Bron. ---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html