- Transfer files across the Internet over QUIC
- Transfer multiple files (support directory)
- Transfer only the changed files
- Delete files in the destination if it is not in the source
git clone git@github.com:BaBa0525/quic-rsync.git
cd quic-rsync
go mod download
# Run the deamon in the target host
go run ./cmd/rsyncd
# Copy source files to the destination
go run ./cmd/rsync /path/to/source host:port@/path/to/destination-
Client send initial packet to the deamon and deamon sends back the file info in the destination.
type FileInfo struct { Path string `json:"path"` CheckSum string `json:"checksum"` } type FileInfoPacket struct { Header Header Files []FileInfo }
-
Client calculates the checksum of the source file and compares it with the destination file.
-
If the checksums are different, client sends the file to the deamon.
-
Deamon writes/removes the file to the destination.
-
Repeat the process for all the files in the source directory.

