Rsync help
Craig Barratt
craig at atheros.com
Wed Oct 30 01:38:00 EST 2002
> SUN box, 2gig ram, hard drive space to spare. Rsync 2.5.5, solaris 5.7
> version 7.
> Half moon, I think it only seems to work on full moon nights.
>
> Here's the command I run as well .....
> /usr/local/bin/rsync --delete --partial -P -p -z -e /usr/local/bin/ssh /dir1
> systemname:/storage
>
> [snip]
>
> > I get the following transering a large file use rsync over ssh.
> >
> > root at pbodb bin$ ./ausbk.sh
> > building file list ...
> > 10 files to consider
> > ERROR: out of memory in generate_sums
> > rsync: connection unexpectedly closed (8 bytes read so far)
> > rsync error: error in rsync protocol data stream (code 12) at io.c(150)
How big are the files you are trying to rsync? It is probably failing
here:
if (verbose > 3)
rprintf(FINFO,"count=%d rem=%d n=%d flength=%.0f\n",
s->count,s->remainder,s->n,(double)s->flength);
s->sums = (struct sum_buf *)malloc(sizeof(s->sums[0])*s->count);
if (!s->sums) out_of_memory("generate_sums");
sizeof(s->sums[0]) is at least 32, and s->count is ceil() of file size
divided by the block size (default is 700). So this malloc should be
around 5% of the largest file size (eg: approx 500MB for a 10GB file).
If VM is tight on your machine (you say it is intermittent) then this
might fail.
You could try -vvvv and see what the previous rprintf() shows --
unfortunately inside the loop below it also prints every checksum
when verbose > 3 so you will get a huge amount of output; just
tailing the output should be enough.
A solution is to increase the block size (eg --block-size=4096), which
reduces the malloc() needs proportionally.
Craig
More information about the rsync
mailing list