使用p2p实现Linux内网快速分发文件

安装opentracker

方法一:编译安装

参考如下官方文档进行操作即可,国内下载源码会比较慢
https://erdgeist.org/arts/software/opentracker/

编译完成后会生成可执行文件opentracker和opentracker.debug

可以直接./opentracker.debug进行验证

方法二:使用lednerb/opentracker-docker镜像进行部署

docker部署的方式可以参考
https://github.com/Lednerb/opentracker-docker

这里选择在kubernetes集群上部署

bash 复制代码
cat > opentracker-ingress-service-deployment.yaml << EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: opentracker-ingress
spec:
  defaultBackend:
    service:
      name: opentracker-service
      port:
        number: 6969
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: opentracker-service
  name: opentracker-service
spec:
  ports:
    - name: tcp-6969
      protocol: TCP
      port: 6969
      targetPort: 6969
    - name: udp-6969
      protocol: UDP
      port: 6969
      targetPort: 6969
  selector:
    app: opentracker-pod
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: opentracker-deploy
  name: opentracker-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: opentracker-pod
  strategy: {}
  template:
    metadata:
      labels:
        app: opentracker-pod
    spec:
      containers:
      - image: lednerb/opentracker-docker
        name: opentracker
        ports:
        - containerPort: 6969
EOF

kubectl apply -f opentracker-ingress-service-deployment.yaml

测试

制作torrent种子

这里使用ctorrent制作种子

假设tracker服务器IP=192.168.122.21

bash 复制代码
ctorrent -t -u "http://192.168.122.21:6969/announce" -s yourfile.tgz.torrent yourfile.tgz

启动初始上传服务

让制作的种子和文件存在于同一文件夹中,执行如下命令就会自动做种

bash 复制代码
ctorrent yourfile.tgz.torrent

下载

下载可以使用支持BitTorrent协议的任意客户端,这里使用aria2进行测试

假设把上面的种子文件已经放到了tracker服务器的httpd根目录下

bash 复制代码
aria2c  http://192.168.122.21/yourfile.tgz.torrent

下载完成后会自动做种一段时间,最后自动退出

参考:

使用BT协议构建软件快速分发系统(可用于Linux内网快速分发文件)

来自 https://blog.csdn.net/Jailman/article/details/86231517

opentracker 搭建自己的 BT Tracker 服务器

来自 https://blog.wudinaonao.com/2020/12/24/opentracker搭建自己的BT-Tracker服务器/

相关推荐
ICT系统集成阿祥1 分钟前
服务器网卡绑定(bond)7种模式详解
运维·服务器·bond·网卡绑定·服务器链路聚合
wulalalalalalalal2 分钟前
Linux 内网服务器通过代理访问外网
linux·运维·服务器
C_心欲无痕5 分钟前
ts - 模板字面量类型与 `keyof` 的魔法组合:`keyof T & `on${string}`使用
linux·运维·开发语言·前端·ubuntu·typescript
fy zs7 分钟前
网络编程套接字
linux·服务器·网络·c++
乾元10 分钟前
无线定位与链路质量预测——从“知道你在哪”,到“提前知道你会不会掉线”的网络服务化实践
运维·开发语言·人工智能·网络协议·重构·信息与通信
望眼欲穿的程序猿14 分钟前
基于Linux&MacOS 开发Ai8051U
linux·运维·macos
飞飞传输14 分钟前
适配信创环境的传输系统推荐:助力企业数据安全合规传输!
大数据·运维·安全
OpsEye15 分钟前
Redis 内存碎片的隐形消耗——如何用 memory purge 命令释放空间?
运维·网络·数据库·redis·缓存·内存·监控
Bigbig.17 分钟前
驱动工程师面试题 - 操作系统1
linux·开发语言·面试·硬件架构
weixin_4624462321 分钟前
Python Flask静态文件服务器:支持自动JSON扩展名补全的智能文件服务
服务器·python·flask