Sync process for new file, if the block cannot be copy locally.

I’am new to syncthing. I search on web for a answer to my question, but I not found I complete answer.

In a network with more then 2 PCs, all share the same folder. I found on this forum that when new file was created on one PC, if the block cannot be copy locally, send all the block to the other PC. So the source PC send (n-1) times the file. (Where n the number of PCs) This is correct ?

For example if I have 2 LAN connected between a VPN and slow ADSL, 3 PCs for LAN, for total 6 PCs. When I have a new file on a PC, if the block cannot be copy locally, I have that the traffic came through via the VPN was three time the file dimension.

I not like this method, because multiply the network traffic of (n-1) times.

I see how Resilio advertises their fastier trasfers, and I see they send I new file one time from the source PC. Can be implement in Syncthing ?

Thank you Best regards

Resilio does not send the file once, it might send file n times if the source is the fastest link. Syncthing does the same, as in, it might not download all data from source device if there are other faster devices with the data (or parts of the data).

I see that article https://www.resilio.com/tech/p2p-is-faster/ , see paragraph “Real World Example” For a new file, if the block cannot be copy locally, it divide file in X block, as Syncthing, and send only X block, not (X block) *(numumber of PCs - 1).

Syncthing do the same?

How Syncthing understand if the source in the fastest link ?

In the case of 2 LAN at 1Gigabit with 3 PCs for LAN, for total 6 PCs, connected between by a VPN on slow ADSL Down20Mbit/s Up1Mbit/s. I expect the file to be trasfer through the VPN 1 time, maybe 1/3 to 3 PCs for LAN. Then in the LAN the 3 PCs exchange the block each other.

https://kastelo.net/blog/2018-06/syncthing-syncing/

Maybe this Blog article helps you to understand the syncing process.

I understand that, and I specific that:

if the block cannot be copy locally

I discuss on how syncthing recover the need block from the syncthing cluster or how it send to the cluster.

The node with the best connection is considered the one that has least requests outstanding, as in we always prefer asking data from the node with least outstanding requests, which means we request data from all nodes that have data (even if its partial), and we aak for different parts of the file for each node.