Using multiple ethernet connections?

The main problem with fixing a source port, given fixed source IP and destination IP and port, is you’re limited to a single end-to-end TCP connection, which seems like a non-starter, and HTTP doesn’t do it intentionally that I can see, either by its standard or by implementation – feel free to cite any examples.

At the Microsoft .NET level, HttpClient which Duplicati uses doesn’t even seem to allow such a setting.
Socket.Bind does, but Duplicati uses a higher-level API. Note also the Remarks that show it’s optional:

You do not need to call Bind before using the Connect method unless you need to use a specific local endpoint.

Know your TCP system call sequences which comes from a Linux point of view says the same thing:

For a client process, it is not mandatory to issue a bind call.

All the above is a bit redundant because everyone here seems to know connect will bind, if need be.

I can’t find a Firefox source port in about:config. Exotic Linux tools such as curl and wget lack this.
Granted, nc has it, but it’s about as low-level a tool as exists on Linux as a command. Its purpose is:

The nc (or netcat) utility is used for just about anything under the sun involving TCP, UDP,
or UNIX-domain sockets. It can open TCP connections, send UDP packets, listen on arbitrary
TCP and UDP ports, do port scanning, and deal with both IPv4 and IPv6.

What can it distinguish? Does it know about anything QoS flavored, or is it only source/dest IP/port?
If it can distinguish source IP, I see claims that Windows can have multiple IPs on one adapter, then

How to Force an Application to Use a Specific Network Card
3 ForceBindIP GUI to Easily Bind Windows Application to Specific Network Adapter
might get you the rest of the way. Even though they say adapter, its interface appears to be address.
You could possibly get it to run per-job if you’re willing to be Using Duplicati from the Command Line.

I haven’t tried this, and can’t vouch for it, but there seem to be a limited number of things available to signal downstream networking equipment how you’d like things handled. IP TOS field and successor Differentiated Services DSCP come to mind (I’m not a QoS expert), but seem to have been ruled out.

So going back to the original question of can you “bind specific backup jobs to specific interfaces” the answer appears to be yes if jobs are processes starting each time, as opposed to a long-lived server.

Duplicati can run multiple long-lived servers if you prefer, each on its own port (8200, 8300, etc), so a job would just need to be put on the correct server for the desired interface, if jobs in GUI are wanted.

Duplicati.GUI.TrayIcon.exe will do the search for you. For Duplicati.Server.exe use --webservice-port. You might also need --server-datafolder so that multiple servers put their databases in different spots.

If you decide to try assigning jobs to interfaces, be careful about the Duplicati autoupdate design that starts a somewhat fixed initial install in Program Files, which launches the newest installed update…
Firewalls that look at application paths get confused. Confusion is avoided by using updates by .msi.