Linux文件复制与远程传输:cp、scp、ssh、sftp实战详解
1. 从cp说起文件复制的隐藏细节与实战用法很多人第一次接触Linux可能就是从cp命令开始的。把文件从A目录复制到B目录看起来简单得不能再简单但实际用起来cp里的门道比想象中多得多。我记得有一次在一台生产环境的服务器上做部署需要把一个编译好的程序包复制到多个业务目录。直接敲了一个cp -r build/ /data/app/跑完也没细看结果第二天同事反馈线上版本不对——后来一查原来是复制时把符号链接直接当成普通文件复制过去了目标目录里多出来一大堆实体文件反而把原来的链接关系全破坏了。那一刻我才意识到cp如果只停留在复制文件这个层面出了问题都不好排查。1.1 几个必须收藏的cp参数组合先说说我们日常用得最多的几种cp姿势# 基础复制把source.txt复制到目标目录 cp source.txt /backup/ # 递归复制目录保留文件属性 cp -rp source_dir/ /backup/ # 只在源文件比目标文件新时才复制适合增量同步 cp -u source.txt /backup/ # 复制时显示进度GNU coreutils 8.32 cp -v source.txt /backup/参数里最容易被忽略的是-p。它保留的是权限、时间戳、属主这些元信息。为什么重要因为很多程序部署时会校验文件修改时间和权限位如果只是裸复制到了新环境可能因为权限不对直接拒绝执行。这里我建议养成习惯凡是复制配置文件或者程序包都顺手带上-p避免后续一堆权限问题。1.2 硬链接与符号链接的处理陷阱cp默认遇到符号链接时复制的是链接指向的真实文件内容而不是链接本身。这个行为和大多数人的直觉相反。如果你希望复制出来的目标仍然是一个指向原路径的链接需要使用-d参数cp -d liblink.so /backup/如果不加-d你会得到一个巨大的实体文件如果源链接指向一个不存在的目标复制甚至会报错。这种细节在实际工作中影响很大尤其是复制整个动态库目录、node_modules或者Python虚拟环境时一旦不小心把符号链接展开成实体文件占用空间瞬间翻几倍恢复现场也麻烦。另外还有硬链接。cp默认会把硬链接关系打散如果你希望保留硬链接结构需要-l或者--preservelinks。不过说实话日常运维中用到硬链接保留的场景不多更多是备份归档时才需要。我的建议是先把-p -d -r记牢再去了解其他高级参数。1.3 大文件复制时怎么避免踩坑复制大文件比如几十GB的数据库备份最怕的是什么中断。cp本身没有断点续传能力一旦网络抖动或者源文件被占用导致读取超时整个复制就得重来。实操中我一般这样处理先rsync做分块同步而不是直接cp因为rsync支持断点续传且可以只同步差异部分如果环境里没有rsync可以用cp配合nohup放后台并用watch观察进度复制前用df -h检查目标分区剩余空间避免复制到一半磁盘满了。还有一个小技巧复制大文件时建议用绝对路径避免通配符因为目录层级不对而出现意外。比如cp -rp /data/app/* /backup/这种写法一旦目录里有隐藏文件默认是通配符匹配不到的。用cp -rp /data/app/. /backup/才能把隐藏文件一起带上。2. scp跨机器复制文件的正确打开方式cp解决的是本机复制一旦文件要传到另一台服务器最常用的命令就是scp。很多人从cp过渡到scp时会把参数搞混因为scp的用法看起来跟cp很像但背后的传输机制完全不同。2.1 scp的工作机制与基础语法scp是基于SSH协议的文件复制工具。也就是说只要目标机器支持SSH登录你就一定能用scp传文件不需要额外部署FTP服务或者搭建文件共享。这一点非常方便尤其是面对那些没有图形界面、只有命令行环境的内网服务器时scp几乎是唯一顺手的选择。基础语法# 本地文件上传到远程服务器 scp localfile.txt userremote_host:/data/ # 远程文件下载到本地 scp userremote_host:/data/remotefile.txt ./ # 复制整个目录 scp -r ./build/ userremote_host:/opt/app/ # 指定SSH端口非22端口时的必需操作 scp -P 2222 localfile.txt userremote_host:/data/注意scp指定端口用的是大写-P而ssh登录指定端口用的是小写-p。这个大小写问题让人栽过不少跟头我第一次用scp传文件的时候加的是小写-p结果直接报错option requires an argument。一定要多看几眼报错信息别凭感觉猜。2.2 scp传大目录时的实用技巧传单个小文件scp和ftp体验差不多。但传整个项目目录尤其里面还有node_modules、.git这些乱七八糟的东西时效率就很关键了。以下是我常用的几个组合# 跳过已知主机指纹检查内网测试环境可用公网慎用 scp -o StrictHostKeyCheckingno -r data/ userremote_host:/backup/ # 保留文件时间和权限 scp -rp data/ userremote_host:/backup/ # 限制带宽避免影响线上业务 scp -l 4096 bigfile.tar.gz userremote_host:/data/这里-l限制的是带宽单位是Kbit/s也就是说-l 4096实际限速约512KB/s。如果线上服务承载着业务流量我建议限制在100M以内宁可传慢一点也别把网络打满。还有一个很多人不知道的用法scp也可以在两台远程主机之间直接传输不需要把文件先下载到本地再上传。格式是scp user1host1:/data/file.txt user2host2:/data/这个特性在内网跳板机场景下特别实用能省掉中转的时间和磁盘空间。2.3 scp的局限与替代方案scp的短板也很明显不支持断点续传传输大文件过程中断就得全部重来也不支持增量同步每次都全量复制。所以当文件量级上了GB或者需要定期同步大量数据时我会优先选用rsync配合SSH而不是scp。rsync不仅能只传差异部分还能在传输完成后校验文件完整性。当然如果只是偶尔传几个配置文件、日志包scp的简洁性无可替代。打个比方scp相当于打车去目的地简单直接rsync相当于搬家公司复杂但专业。日常小任务用scp完全够大批量同步就得靠rsync。3. ssh连接远程服务器的中枢与钥匙如果说scp是传文件的专用通道那ssh就是整个远程操作体系的地基。没有sshscp和sftp都无从谈起。ssh最强大的一点不只是提供一个可交互的远程终端还在于它能安全地执行命令、转发端口、挂载远程目录甚至承载各种隧道的传输。3.1 密码登录和密钥登录的取舍初期连服务器密码登录是最容易上手的。但随着管理的机器多起来密码的痛点就暴露了密码太简单容易被爆破密码太复杂自己记不住换密码还得全部机器同步。所以我一般在管理超过三台机器后就会全面切换到密钥认证。生成密钥对ssh-keygen -t ed25519 -C deploy-key为什么推荐ed25519算法而不是rsa因为ed25519密钥更短安全性更高生成和认证速度也更快。旧的服务器或老系统如果只支持rsa可以用rsa 4096位但新环境我都用ed25519。生成之后把公钥放到服务器上ssh-copy-id -i ~/.ssh/id_ed25519.pub userremote_hostssh-copy-id会自动把公钥追加到远程主机的~/.ssh/authorized_keys文件里并处理好权限。手动操作时容易忽略一点authorized_keys文件权限必须是600.ssh目录权限必须是700否则服务端会拒绝读取。3.2 配置文件的效率优化管理多台服务器的人如果把所有连接参数都记在脑子里早晚会乱。我强烈建议花几分钟写好~/.ssh/configHost prod HostName 192.168.10.10 User deploy Port 22 IdentityFile ~/.ssh/id_ed25519 Host dev HostName 192.168.10.20 User root Port 2222配置之后直接执行ssh prod就能登录不用再记住IP、用户名、端口和密钥路径。scp也可以复用这套配置scp build.tar.gz prod:/data/app/这个配置还能配合ProxyJump使用。如果你的服务器在跳板机后面可以这样写Host internal HostName 10.0.0.5 User admin ProxyJump jump_host然后一个ssh internal就能自动先登跳板机再跳转目标机体验非常流畅不用再手动开两层终端。3.3 远程执行命令与故障排查ssh不只是用来登录交互的更常见的用途是远程执行命令。例如批量检查多台机器的负载和磁盘ssh prod df -h free -m uptime这种用法配合循环脚本一两行就能完成几十台机器的巡检。如果需要在远程脚本里使用环境变量或特定shell我通常建议用bash显式执行ssh prod bash -lc ./deploy.sh --envprod遇到SSH连接慢的问题大多数情况下都是DNS反向解析在捣乱。可以在服务器端的/etc/ssh/sshd_config里设UseDNS no重启sshd后连接速度立竿见影地提升。还有一个常见问题连接时报错Connection refused通常是因为sshd没启动或者防火墙没放行22端口。排查时先用systemctl status sshd再用ss -lntp | grep 22确认监听状态别一上来就怀疑密码错误。4. telnet明文老协议还在活着的场景聊完ssh很多人会问那telnet是不是可以彻底扔掉了我的回答是telnet作为日常远程登录工具确实该退役但作为一个网络调试探针它到今天仍然在某些场景下无法替代。4.1 telnet的定位与短板telnet诞生于互联网早期最大特点就是简单但它最致命的缺陷也是简单——所有数据包括用户名和密码都是明文传输。只要有人在网络上抓包你的账号密码就相当于裸奔。现在的生产环境里还开着telnet服务几乎等于给自己挖坑。因此凡是公网可达的设备我强烈不建议开启telnet服务。不过telnet命令本身在客户端侧还是很有价值的它和telnet服务其实是两回事。客户端这边的telnet更多是充当一个原始TCP连接测试工具来用。4.2 最常用的telnet用途端口连通性探测我工作中最常用telnet的场景不是登录服务器而是验证某个端口通不通。比如某台Web服务起在8080端口我会直接敲telnet 192.168.1.100 8080如果端口开放屏幕上会显示连接成功甚至出现服务端的欢迎信息如果连接失败会提示Connection refused或直接超时。这个排查手段在确认防火墙规则、服务监听状态时特别高效。比如我判断MySQL服务是否正常可以telnet 192.168.1.100 3306看到5.x版本的欢迎信息说明MySQL至少监听正常。如果连接超时则大概率是防火墙拦截而不是进程挂了。这一招比登录数据库查状态要快得多。4.3 交互排查的灵活之处telnet连接上之后可以直接进入交互模式输入一些应用层协议的命令来手动验证服务响应。比如测试HTTP服务连接80端口后手动发送GET / HTTP/1.1 Host: 192.168.1.100连敲两个回车服务端就会把HTTP响应头和数据返回来。这样就算浏览器访问不了也能定位问题出在服务端还是网络层。同理可以用telnet测SMTP的25端口、Redis的6379端口等。但使用telnet测试时需要注意一点如果中间经过NAT或者负载均衡设备部分设备会在一段时间空闲后主动断开无响应的TCP连接telnet测试的结果可能和真实业务表现有偏差。验证端口状态时最好结合ncnetcat或者ss -lntp一起看多工具交叉确认更稳妥。5. sftp用交互式命令管理器替换老牌FTP既然都乘上SSH这趟车了文件传输当然还有更舒服的姿势——sftp。它和scp一样基于SSH协议但它提供的是交互式操作界面更像是在浏览器里用FTP工具只是通道是加密的。5.1 sftp的基础使用与目录操作通过sftp登录远程主机sftp userremote_host登录后进入sftp交互命令行常用命令跟本地shell很像pwd # 查看远程当前目录 lpwd # 查看本地当前目录 ls # 列出远程目录 lls # 列出本地目录 cd /data/logs # 切换远程目录 lcd /tmp # 切换本地目录文件上传下载put localfile.txt # 把本地文件传到远程当前目录 get remotefile.txt # 把远程文件拉到本地当前目录 put -r localdir/ # 递归上传目录 get -r remotedir/ # 递归下载目录这个交互模式最大的好处是传错目录之前可以先用pwd和ls确认一下位置减少误操作。我见过不少人用scp直接把文件传到错误路径就是因为scp命令里目标路径写错了连确认的机会都没有。5.2 非交互式sftp与自动化脚本如果想把sftp集成到脚本里可以用-b参数指定批处理文件sftp -b batch.txt userremote_hostbatch文件里面写的是sftp命令lcd /data/upload cd /srv/files put report_20240601.csv bye实际使用中我发现批处理模式有个坑如果远程目录里已有同名文件sftp默认直接覆盖不会有任何提示。这在自动化任务里可能造成数据被静默覆盖。解决思路是先在脚本里用ls检查文件是否存在或者上传时带上时间戳文件名从源头避免冲突。5.3 sftp与scp怎么选两者底层的加密机制相同主要差别在于使用体验和功能边界临时传单个文件scp更直接一条命令完成需要批量上传下载、查看目录、删改文件时sftp更顺手sftp支持断点续传reget和reput命令scp不支持sftp能对远程文件做基本管理操作重命名、删除、改权限scp做不到。以我的习惯日常传一两个文件直接scp如果要对远端目录做整理或者大批量传文件我优先用sftp。尤其需要在服务器之间搬运日志打包文件时sftp结合rename整理归档很方便。6. 五个命令的定位串讲与选型建议这五个命令放在一起看其实正好覆盖了Linux系统管理的两大基础需求本机文件操作和远程交互管理。cp管的是本机复制scp和sftp管的是远程传输ssh管的是远程登录执行telnet则退居二线主要当网络连通性测试工具来用。6.1 一张表理清五个命令的适用场景命令核心用途传输加密代表性场景我的推荐度cp本机文件/目录复制不涉及网络本地备份、部署文件准备必备scp远程文件上传下载SSH加密单次传文件、跨主机搬运日常推荐ssh远程登录、命令执行SSH加密服务器管理、批量运维核心必备telnet旧式远程登录/端口测试明文传输端口连通性探测、调试协议仅限测试sftp交互式远程文件管理SSH加密批量传输、远端目录整理强烈推荐6.2 组合使用的真实工作流举一个我日常运维中很典型的例子服务器A上有业务日志需要归档到服务器B同时要检查服务器B上的磁盘空间够不够。我会这么操作# 1. 检查目标磁盘空间 ssh serverB df -h /data # 2. 把日志包从A传到B先打包再scp比直接scp目录更高效 tar czf logs_20240601.tar.gz /var/log/app/ scp logs_20240601.tar.gz serverB:/backup/ # 3. 传完用sftp进去校验大小、解压前先看一眼目录结构 sftp serverB cd /backup ls -lh这样一套组合拳下来单个命令都不复杂但串起来就是一个完整、可复现的运维流程。新手学命令很容易陷入“单个参数背得很熟一旦组合起来就乱”的状态我建议是先从cp和ssh这两个起点突破再扩展到scp、sftp最后把telnet当作专项调试工具来用。6.3 终端环境的锦上添花如果使用频率极高还可以在本地终端配置一些简化操作。比如zsh的alias习惯alias upscp -rp ./build/ prod:/data/app/ alias getlogscp prod:/var/log/app/biz.log ./或者配合ssh config把整套连接参数、密钥、跳板逻辑全部收敛好。这样每个新机器加入管理时只需要加几行配置后续所有命令都走同一套简写入口记忆负担会小很多。关于安全与合规的一点额外提醒最后想说一句和标题相关但又容易被忽视的话远程管理工具越多安全边界越要清晰。凡是基于SSH的命令ssh、scp、sftp密钥权限一定要管好。.pem或id_ed25519这类私钥文件建议设为600权限不要放到项目目录里一起提交。公网服务器的SSH端口可以考虑更换非默认端口并关闭密码登录只留密钥登录能大幅减少被扫描爆破的概率。telnet这类明文协议我建议在架构里彻底禁用服务端只在调试内网设备时作为客户端测试命令使用。原则很简单能加密传输的数据一律走SSH通道不能加密的场景就先别传敏感信息。我见过太多团队把一堆服务器密码写在聊天软件里还开着默认22端口和密码登录。这类隐患平时不暴露一旦内网被扫描进入影响范围是连锁的。所以每次配置完ssh、scp、sftp相关环境记得顺手检查一遍sshd_config的PermitRootLogin和PasswordAuthentication设置让远程访问建立在最小授权、最强认证的基础上。工具链只是手段稳和安才是最终目的。

相关新闻

Hadoop作业提交全链路源码解析:从submit命令到AM启动

Hadoop作业提交全链路源码解析:从submit命令到AM启动

1. 从一条submit命令说起:Job提交链路的全景图我最早研究Hadoop的job提交,是因为手头一个跑批任务频繁在提交阶段就失败,日志里翻来覆去就是各种莫名其妙的连接异常。当时被这个问题折磨了几天,最后实在坐不住,只能硬着头皮去啃源码。啃完之后…

2026/10/19 13:10:33 阅读更多 →
从分布式到微服务:架构师必须补上的网络底层课

从分布式到微服务:架构师必须补上的网络底层课

1. 从一根网线到全球互联:为什么架构师必须回头补网络这一课很多做了三五年开发的朋友,聊起微服务、容器编排、服务网格头头是道,但一旦线上出现跨机房调用超时、某个Region的请求大面积抖动、或者服务间gRPC连接莫名其妙被重置,排…

2026/10/19 13:10:33 阅读更多 →
数据链路层核心原理与实战排查:从封装成帧到VLAN和交换机

数据链路层核心原理与实战排查:从封装成帧到VLAN和交换机

1. 为什么搞懂数据链路层,比背一百个协议名都管用很多自学者学计算机网络有个通病——上来就背协议栈,TCP三次握手、UDP报文格式、IP地址分类背得滚瓜烂熟,可一旦被人问"你打开一个网页,数据从你的网卡到路由器再出去&#x…

2026/10/19 13:10:33 阅读更多 →

最新新闻

进口阀门选型与采购实务:极端工况应用与避坑指南

进口阀门选型与采购实务:极端工况应用与避坑指南

进口阀门这些年一直是工业项目里绕不开的话题。做设备采购的、搞工艺设计的、管工厂运维的,几乎都跟它打过交道。很多人一听到“进口阀门”就想到贵、货期长、售后麻烦,但实际上它能在国内重工业场景里占据一席之地,靠的是极端工况下那份稳定…

2026/10/19 13:50:38 阅读更多 →
Flink CDC 3.0:MySQL到Doris实时同步的Binlog机制与避坑指南

Flink CDC 3.0:MySQL到Doris实时同步的Binlog机制与避坑指南

简介:由尚硅谷研究院撰写的Flink CDC 3.0学习文档,面向具备一定Flink基础的大数据处理研发人员,系统讲解如何基于变更数据捕获技术实现MySQL到Doris的实时数据同步。内容首先界定CDC概念,比较基于查询和基于Binlog两种方式的执行模…

2026/10/19 13:50:38 阅读更多 →
CLI驱动的Git原生代码审查:LLM嵌入开发流程实践

CLI驱动的Git原生代码审查:LLM嵌入开发流程实践

1. 项目概述:这不是又一个“AI写代码”玩具,而是一套嵌入开发流程的轻量级代码审查协作者“open-code-review”这个名字乍一听像某个开源项目仓库名,但拆开来看——open(开放)、code(代码)、rev…

2026/10/19 13:50:38 阅读更多 →
CP2102驱动安装与串口调试全攻略:从识别到回环测试

CP2102驱动安装与串口调试全攻略:从识别到回环测试

简介:CP2102驱动是Silicon Labs推出的USB转UART桥接器配套软件组件,面向使用开发板、模块或自定义硬件的嵌入式开发者与电子爱好者,用于让Windows系统正确识别并稳定通信CP2102芯片设备。资源包共15个文件,约3.41MB,以…

2026/10/19 13:50:38 阅读更多 →
开源CLI代码审查工作流:基于Git+LLM的本地化自动化Code Review

开源CLI代码审查工作流:基于Git+LLM的本地化自动化Code Review

1. 项目概述:这不是一个“工具”,而是一套可落地的开源代码审查工作流 “open-code-review”这个标题乍看像某个具体软件的名字,但结合它在热搜词中与 CLI、LLM、git、code review 的强关联,再叠加上近期开发者社区里反复出现的…

2026/10/19 13:50:38 阅读更多 →
MATLAB SVD实战:从矩阵分解到图像压缩与降维的完整实现

MATLAB SVD实战:从矩阵分解到图像压缩与降维的完整实现

简介:这份MATLAB SVD资源包面向学习线性代数、信号处理与图像处理的初学者及工程人员,围绕奇异值分解这一核心矩阵分解方法,提供可直接运行的代码示例与实验素材,帮助理解SVD的数学原理及其在信道估计、图像压缩去噪等场景中的落地…

2026/10/19 13:49:32 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →