You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重启smbd daemon不中断Windows客户端SMB文件传输的方案咨询

结论

可以实现SMB传输中断后的断点续传,有两种实现方案,可根据场景选择:

  1. 调整Samba服务端配置,利用SMB3的持久句柄特性,支持Windows资源管理器默认拷贝操作的断点续传,无需修改客户端配置(仅要求客户端为Win8/Server2012及以上版本,支持SMB3.0+)
  2. 不改服务端配置,客户端使用robocopy命令进行拷贝,自带断点续传能力

方案1:服务端配置SMB3持久句柄

核心原理

SMB3.0及以上版本自带持久句柄特性,smbd进程重启时会将当前打开的文件句柄持久化存储到本地磁盘,重启完成后自动恢复句柄,客户端连接断开后会自动重连并复用原有句柄,拷贝任务可直接从断点继续。

配置修改

1. 修改smb.conf的[global]段,新增以下参数

[global]
# 最低支持SMB3协议,确保客户端走SMB3连接
server min protocol = SMB3
# 启用耐用句柄、持久句柄
durable handles = yes
persistent handles = yes
# 关闭内核 oplock,与持久句柄特性冲突
kernel oplocks = no
# 断开虚拟连接时不重置会话,允许重连恢复
reset on zero vc = no
# 调大最大句柄数,适配集群场景的并发连接
handle count maximum = 65535

2. 修改共享配置(smb-res.conf对应共享段),新增以下参数

[test109_smb]
# 共享级别开启句柄特性
durable handles = yes
persistent handles = yes
# 关闭客户端离线缓存,避免与持久句柄冲突
csc policy = disable

验证生效

  1. 执行testparm检查配置无报错后,执行systemctl restart smbd nmbd重启服务
  2. 客户端PowerShell执行Get-SmbConnection,确认对应共享的Dialect列显示为3.0.x以上
  3. 测试:客户端通过资源管理器拷贝大文件,中途重启smbd服务,等待连接恢复后点击重试,可观察到拷贝进度从断点继续而非从头开始

方案2:客户端侧实现(无需改服务端)

如果不方便调整服务端配置,Windows自带的robocopy命令原生支持断点续传,在客户端CMD/PowerShell执行以下命令即可:

# /Z 启用断点续传模式,/R:10 重试10次,/W:5 每次重试间隔5秒
robocopy 源路径 目标路径 文件名 /Z /R:10 /W:5

比如要从\\SERVER\test109_smb\test.iso拷贝到本地D盘,命令为:

robocopy \\SERVER\test109_smb D:\ test.iso /Z /R:10 /W:5

该方案兼容性更强,支持SMB2协议的客户端也可以使用。


注意事项
  1. 方案1要求客户端系统版本不低于Win8/Server2012,Win7最高仅支持SMB2.1,不支持持久句柄特性,无法实现资源管理器默认拷贝的断点续传
  2. smbd服务重启时长不要超过60秒(Windows默认SMB会话超时时间),否则会话失效无法恢复句柄
  3. 现有配置中的auth methods、syslog参数告警属于废弃提示,不影响本功能使用,可直接删除对应参数消除告警

内容的提问来源于stack exchange,提问作者lignumq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:06:02