We are currently designing a system to securely upload very large files (>10GB) across the internet to a storage server at our office. The bottleneck in this system will no doubt be the remote uplink speed. Clients will join a VPN to access the server. What is the most efficient way to make these uploads? We're looking at Nextcloud, NFS, FTP, rsync, etc. but I'm not sure what the overheads involved here are or how to calculate them.
Since VPN tunnels encapsulate the original network packets, they create overhead - the size of the encapsulating headers. Accordingly, a VPN using small headers provides better efficiency, higher net speed or lower effective data volume per user net data volume.
Basically, if the application is able to provide decent security (esp. by using TLS) and authentication you could omit the VPN tunnel and its overhead.
Which application protocol is the most efficient for your use case depends on the exact workload. FTP/FTPES is efficient for large, unique files but the protocol overhead may be a no-go for numerous, small transfers. NFS may be negatively affected by high network latency. rsync is highly efficient for transmitting file changes between locations, and so on.