@@ -15,9 +15,6 @@ Fastsync targets the following use case:
15
15
* ** Compression is handled externally.** Fastsync does not compress the stream.
16
16
If the data volume benefits from compression, then compress the files ahead
17
17
of time with e.g. ` lz4 ` , ` brotli ` , or ` zstd ` .
18
- * ** A full transfer is necessary.** Fastsync always sends all files. If some
19
- files are already present at the receiving side, or similar data is already
20
- present, ` rsync ` might be a better fit.
21
18
22
19
## Building
23
20
@@ -49,6 +46,38 @@ On the receiving end, suppose we download with 32 TCP connections:
49
46
cd /some/path
50
47
fastsync recv 100.71.154.83:4440 32
51
48
49
+ File modification timestamps are preserved during all transfers.
50
+
51
+ ## Incremental transfers
52
+
53
+ Fastsync supports incremental transfers with the ` --incremental ` flag. When enabled, fastsync will:
54
+
55
+ 1 . Compare files by name, size, and modification timestamp
56
+ 2 . Skip files that already exist at the destination with matching size and timestamp
57
+ 3 . Transfer only files that are missing or have different size/timestamp
58
+
59
+ Both sender and receiver must use the ` --incremental ` flag:
60
+
61
+ # Sender
62
+ fastsync send 100.71.154.83:4440 --incremental file.tar.gz
63
+
64
+ # Receiver
65
+ fastsync recv 100.71.154.83:4440 32 --incremental
66
+
67
+ ## Testing
68
+
69
+ To run all tests:
70
+
71
+ cargo test
72
+
73
+ To run only unit tests:
74
+
75
+ cargo test --lib
76
+
77
+ To run integration tests:
78
+
79
+ cd tests && ./test_incremental.sh
80
+
52
81
## Known issues
53
82
54
83
* It's too spammy.
0 commit comments