A机通过 python -m http.server 下载B机的文件

我们目标是:

A 机(客户端)把整个目录 X 从 B 机(服务器)一次性拉下来,目录结构保持原样,且无需在 B 机装任何额外软件------只用 Python 自带的 http.server 模块。


一、在 B 机(被下载端)操作

  1. 打开终端,进入你想共享的目录 X 的上一级

    例:X 目录的绝对路径是 /home/bob/data/X,就执行

    bash 复制代码
    cd /home/bob/data
  2. 启动只读 HTTP 文件列表服务

    端口随意,只要 A 机能连通即可;下面用 2341:

    bash 复制代码
    python3 -m http.server 2341 --bind 0.0.0.0

    说明

    • 0.0.0.0 表示监听所有网卡,方便 A 机用任意地址访问。
    • 该命令不会上传/删除/修改任何文件,只是只读列出并下载。
    • 如果你想后台跑:nohup python3 -m http.server 2341 &
  3. 确认 B 机的 IP

    bash 复制代码
    ip -4 a          # 或者 hostname -I

    假设拿到 192.168.3.100


二、在 A 机(下载端)操作

  1. 测试连通性(可选)

    bash 复制代码
    curl -I http://192.168.3.100:2341/

    返回 200 即正常。

  2. wget 镜像整个 X 目录

    bash 复制代码
    # 先进入你想存放的目录
    cd ~/download
    
    # 递归、保持目录结构、不向上走、把主机当顶级目录
    wget -r -np -nH --cut-dirs=0 \
         --reject="index.html*","*.tmp" \
         http://192.168.3.100:2341/X/

    参数解释

    • -r 递归下载
    • -np 不追到父目录(No Parent)
    • -nH 不生成以主机名命名的最外层目录
    • --cut-dirs=0 不额外砍掉目录层(0 即可)
    • --reject=... 把自动生成的 index.html? 等垃圾过滤掉,可省。

    运行完,A 机当前目录下会出现一个 X/ 文件夹,内容与 B 机完全一致。

  3. 断点续传(如果文件很大/网络不稳)

    在命令里再加 -c

    bash 复制代码
    wget -r -np -nH -c http://192.168.3.100:2341/X/

三、收尾

  • 传输完成后,在 B 机 Ctrl-C 关掉 python -m http.server,端口即释放。
  • 如果目录里有敏感文件,下次别再开 0.0.0.0,可改成 --bind 127.0.0.1 仅供本机测试,或加防火墙规则。

四、常见坑速查

现象 解决
A 机 wget 报 "Connection refused" B 机防火墙没放行 2341, sudo ufw allow 2341/tcpfirewall-cmd --add-port=2341/tcp
下载下来只有 index.html 忘了在 URL 最后加 /X/; 或者没加 -r
出现很多 index.html?C=N;O=D 等文件 --reject="index.html*" 或直接 rm -f **/index.html*

五、一句话总结

B 机

bash 复制代码
cd /path/to/parent_of_X
python3 -m http.server 2341 --bind 0.0.0.0

A 机

bash 复制代码
wget -r -np -nH http://<B_IP>:2341/X/

目录 X 就完整搬过去了。

相关推荐
Highcharts.js12 分钟前
缺失数据可视化图表开发实战|Highcharts创建人员出生统计面积图表示例
开发语言·前端·javascript·信息可视化·highcharts·图表开发
测试员周周5 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
测试19985 小时前
软件测试 - 单元测试总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
曲幽7 小时前
我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
redis·python·postgresql·vue3·fastapi·web·sqlalchemy·admin·fastapiadmin
杜子不疼.7 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号37 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
小鹏linux8 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
sycmancia8 小时前
Qt——编辑交互功能的实现
开发语言·qt
在角落发呆8 小时前
Linux转发配置:解锁网络互联的核心密码
linux·运维·网络
石山代码8 小时前
C++ 内存分区 堆区
java·开发语言·c++