-# syncer
-
-Fast stateful file/disk data syncer.
+syncer -- fast stateful file/disk data syncer.
WARNING: I advise you to use ZFS and its native send/recv commands.
I abandoned that project because of that.
-## Description
-
The main purpose of this utility is fast data synchronization between
two hard drives: one is fast (SSD, SATA HDD), another is connected
through slow USB interface. Target is to lower data amounts needed to
statefile and uses it to determine if we need to update block of data.
# sync from very fast SSD to slow USB connected HDD
- % ./syncer -src /dev/ada0 -dst /dev/da0 -state state.bin
+ $ syncer -src /dev/ada0 -dst /dev/da0 -state state.bin
[%%%%%%]
# all blocks were transferred to da0
Now we have statefile containing cryptographic hashes of the blocks from
source and copy of all read data in destination. Now if we run it again:
- % ./syncer -src /dev/ada0 -dst /dev/da0 -state state.bin
+ $ syncer -src /dev/ada0 -dst /dev/da0 -state state.bin
[....%.]
# only one block was transferred to da0
writes are sequential.
syncer is free software: see the file COPYING for copying conditions.
-
-## Installation
-
- % mkdir -p src
- % git clone git://git.cypherpunks.ru/syncer.git src/syncer
- % export GOPATH=$(pwd)
- % go get github.com/dchest/blake2b
- % go build syncer # syncer executable file should be in current directory
-
-## Statefile Format
-
- SRC_SIZE || BLK_SIZE || HASH0 || HASH1 || ...
-
-`SRC_SIZE` contains size of the source, when it was initially read.
-`BLK_SIZE` is the blocksize used. Both are 64-bit big-endian unsigned
-integers. If either size or blocksize differs, then syncer will deny
-using that statefile as a precaution. `HASHx` is BLAKE2b-512 hash
-output, 64 bytes.