Re: tools/migrate-metadata problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,



Andy Fiddaman wrote:
I've just migrated my metadata files to a separate partition on faster
disks and had a problem with the migrate-metadata script. I use
virtdomains and when the script processes directories it skips any
containing a dot. Since all of my domain directories contain a dot, none
of them were processed.

I made this change to get it to work (this is with 2.3.9), it could be
done in one match, this was just a quick fix.

--- cyrus-imapd-2.3.9/tools/migrate-metadata    2006-11-30
17:11:25.000000000 +0000
+++ cyrus-imapd-2.3.9/tools/migrate-metadata.new        2007-10-05
14:06:54.842848647 +0000
@@ -160,7 +160,7 @@
          ouch "couldn't delete $part$subpath";
        }
    }
-   elsif ($subdir =~ /^[^\.]+$/s) {
+   elsif (-d "$part$subpath" && $subdir !~ /^./ && $subdir !~ /\.$/) {

I tried your patch and it doesn't really recurse here. It does recurse if I match on subdir !~ /^\./ You are matching on every character at the beginning of the line.

An other problem is that it copies other directories too, depending on what your are matching. (That is not your fault ) E.g. The socket directory where the lmtp socket resides.

It think it is difficult to make a definite list of al case, depending if one is using virtual domains, what seperator, ...

I've attached a patch that solves my case :)


--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Rudy Gevaert          Rudy.Gevaert@xxxxxxxx          tel:+32 9 264 4734
Directie ICT, afd. Infrastructuur ICT Department, Infrastructure office
Groep Systemen                    Systems group
Universiteit Gent                 Ghent University
Krijgslaan 281, gebouw S9, 9000 Gent, Belgie               www.UGent.be
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--- cyrus-imapd-2.3.7/tools/migrate-metadata    2005-12-01 23:30:22.000000000 +0100
+++ cyrus-imapd-2.3.7/tools/migrate-metadata.new        2007-10-08 16:15:35.000000000 +0200
@@ -151,16 +151,24 @@
     while ($subdir = readdir DIR) {
        my $subpath = $path . "/" . $subdir;
 
+       next if ( $subdir =~ /^[0-9]+\.$/ || 
+                 $subdir =~ /^\.\.$/ || 
+                 $subdir =~ /^\.$/ );
+       next if ( $subpath =~ /^\/socket$/ ||
+                 $subpath =~ /^\/stage\.$/ ||
+                 $subpath =~ /^\/sync\.$/ );
+
        if ($subdir =~ /^cyrus\.(.+)/s) {
            # cyrus.* file, see if we should migrate it
            if (defined($mfiles{$1})) {
+               # print "copy " . $part . $subpath . " to " . $mpart . $subpath ."\n";
                copy($part . $subpath, $mpart . $subpath) ||
                    ouch "couldn't copy $part$subpath to $mpart$subpath";
                unlink($part . $subpath) ||
                    ouch "couldn't delete $part$subpath";
            }
        }
-       elsif ($subdir =~ /^[^\.]+$/s) {
+       else{
            # no dot in name, so this is a subdir, process it
            mkdir($mpart . $subpath, 0700) ||
                ouch "couldn't create $mpart$subpath";
----
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

[Index of Archives]     [Cyrus SASL]     [Squirrel Mail]     [Asterisk PBX]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [KDE]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux