如何强制rsync使用指定的网络接口?
如何强制rsync使用指定的网络接口?
嗨,我太懂WiFi传大文件的慢劲儿了!给你几个实用的方法,帮你强制rsync用上以太网接口:
方法1:绑定本地IP指定接口
rsync本身没有直接选接口的参数,但每个网络接口都对应独立的IP地址,我们可以用--address参数绑定以太网接口的IP,这样rsync就会强制从这个IP发送数据,也就是用对应的以太网接口了。
- 先查以太网接口(比如
eth0)的IP:
找到输出里的ip addr show eth0inet字段,比如192.168.1.100/24,取前面的192.168.1.100就行。 - 然后给rsync命令加上
--address参数:
这样rsync的流量就会乖乖走以太网接口啦。rsync --address=192.168.1.100 -avz /你的本地源路径 user@目标PC的IP:/目标路径
方法2:临时添加路由规则
如果不想改rsync命令,咱们可以给目标PC的IP加一条专属路由,让到它的流量强制走以太网接口。
- 假设目标PC的IP是
192.168.1.101,以太网接口是eth0,执行这条命令加路由:sudo ip route add 192.168.1.101/32 dev eth0 - 现在正常运行你的rsync命令就行,流量会自动走以太网。
- 传完文件后,记得删掉这条临时路由:
sudo ip route del 192.168.1.101/32
方法3:用Docker做网络隔离
你提到的命名空间/容器方法确实靠谱,咱们可以用Docker的macvlan网络让容器直接用以太网接口,彻底隔离WiFi和以太网的流量。
- 先创建一个绑定以太网接口的macvlan网络(替换成你自己的子网、网关和接口名):
sudo docker network create --driver macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 eth-network - 然后运行一个带rsync的容器,挂载本地源目录,指定用刚才的网络:
容器里的rsync会完全通过以太网传输,不会占用WiFi的带宽。sudo docker run -it --rm --network eth-network -v /你的本地源路径:/source alpine rsync -avz /source user@目标PC的IP:/目标路径
备注:内容来源于stack exchange,提问作者Jeenu
相关产品推荐
相关产品推荐

