I'm mirroring a 25G tree to about a dozen offsite servers. I run it
with --delete and I use ssh as the transport.

I have a toplevel dir /home/apps. I tried in the past to mirror the
whole /home/apps with a single rsync, but it takes too much memory --
there are too many dirs/files in the tree. There are about 50 subdirs
in the /home/apps dir. The rsync process on some of those subdirs
grows to almost 100M -- If I did all the subdirs it runs my
destination boxes out of memory. (source box is 2G, destinations are
128M) I went to an approach that does a single dir at a time:

/bin/bash version (actually I'm using perl now instead)
--------------------------------------
#!/tools/local/bin/bash

for host in $1 $2 $3 $4 $5 $6 $7 $8 $9    
  do
  for dir in `ls /home/apps`
    do
    echo Working on $dir
    /tools/local/bin/rsync --delete -e "/usr/local/bin/ssh "  
      -v --timeout 600 --compress --archive 
      --exclude 'apps/.snapshot/*' /home/apps/$dir  ${host}:/home/apps
   done
done

Problem with this approach is it won't fire a delete on a toplevel dir
if one is removed from the source tree. It will leave the deleted dir
on the destination. Anyone know of a solution for this using rysnc --
and without the rsync -r option on the top? I'm thinking of going to a
simple "ssh ls perlmagic rm -rf" to clean up the toplevel stuff. I
wish I could somehow use rsync for this instead.

Anyone found an approach that works better for large trees? Is there a
way to run rsync that doesn't sink so much memory? I love rsync. Is
there some way to better deal with these large trees? 

Thanks,
eric


-- 
__________________________________________________________________
Eric T. Whiting                                 AMI Semiconductors   
(208) 234-6717                                  2300 Buckskin Road
(208) 234-6659 (fax)                            Pocatello,ID 83201
[EMAIL PROTECTED]

Reply via email to