rsync to iSCSI over WAN
Benjamin R. Haskell
rsync at benizi.com
Fri Jul 23 01:20:09 MDT 2010
On Fri, 23 Jul 2010, Tom Christensen wrote:
> I am running rsync in cygwin on windows. I am attempting to backup a
> somewhat large data store (750GB) to a remote site. As its windows and
> preserving permissions exactly is important, I have an iSCSI drive
> mounted on the local system across a somewhat slow WAN link (IE, it
> would take about 3 months to copy the datastore over it).
> Unfortunately, since this appears as a "local" copy to rsync, it
> always copies whole files. Even though it is a "local" copy, I want to
> only send diffs, as we have large files that have small changes daily.
> Reading the man page, and everything I can find on the net I don't see
> an option to force diffs only/rsync protocol, is this possible?
I didn't see a "don't use --whole-file"-type option. But the following
doesn't use whole-file copies, as alluded to in the --whole-file
documentation ("..., but only if no batch-writing option is in
effect."):
Create a file with the batched updates:
rsync -a --only-write-batch=batched-updates local/disk/ iscsi/target/
Replay those updates:
rsync -a --read-batch=batched-updates iscsi/target/
(or just:)
./batched-updates.sh
Below is a test script that demonstrates.
--
Best,
Ben
Steps:
1. Set up a test directory
2. Create a test file of 100MB of 0's, 12345, 100MB of 0's.
3. Sync it so there are two identical files.
4. Change the 12345 in the test file to 54321.
5. Generate the batch script.
6. Sync using the file.
7. Clean up.
#!/bin/sh
mkdir -p /tmp/rsync-test
cd /tmp/rsync-test
mkdir src
perl -we 'print "0" x 100e6, 12345, "0" x 100e6' > src/file
rsync -a src/ dest/
perl -we 'print "0" x 100e6, 54321, "0" x 100e6' > src/file
rsync -a --only-write-batch=batched-updates src/ dest/
md5sum src/file dest/file
ls -l batched-updates*
./batched-updates.sh
md5sum src/file dest/file
rm -rf /tmp/rsync-test
More information about the rsync
mailing list