You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

向CIFS/NFS挂载的TrueNAS Core 13 NAS执行RSYNC同步时文件名异常变更的问题咨询

向CIFS/NFS挂载的TrueNAS Core 13 NAS执行RSYNC同步时文件名异常变更的问题咨询

你好,我来帮你梳理这个文件名异常变更的问题,咱们一步步来分析和解决:

问题根源分析

你看到的PKOF8Y~2.M4V这种格式是DOS/Windows兼容的8.3短文件名,出现这种情况主要是因为网络共享协议(CIFS/NFS)的配置或者客户端挂载参数不兼容,导致包含特殊字符(比如你例子里的冒号:)的文件名被自动转义成了短格式。而本地ext4挂载没有这个问题,是因为ext4原生支持几乎所有特殊字符,且不需要经过网络协议的转换处理。

针对CIFS挂载的解决步骤

1. 调整TrueNAS的CIFS共享配置

登录TrueNAS Core的Web管理界面,找到对应的CIFS共享并编辑:

  • 查找是否有**“启用8.3文件名”**的选项,如果是开启状态,直接关闭它(这个选项是为了兼容老旧Windows系统,会自动生成短文件名);
  • 确认共享的字符编码设置为UTF-8,确保字符集匹配。

2. 优化客户端的CIFS挂载参数

修改你的Kubuntu系统里的挂载配置(比如/etc/fstab里的对应行),使用更兼容的CIFS版本和参数,示例如下:

//你的TrueNASIP/共享名 /本地挂载点 cifs username=你的用户名,password=你的密码,iocharset=utf8,vers=3.1.1,nobrl,file_mode=0755,dir_mode=0755 0 0

重点说明:

  • vers=3.1.1:使用较新的CIFS协议版本,对特殊字符的支持更好;
  • iocharset=utf8:确保字符集编码一致(你之前试过这个,但搭配新协议版本才会生效);
  • nobrl:避免字节范围锁的问题,减少协议层面的兼容性冲突;
  • file_modedir_mode:确保挂载后的文件/目录权限正常,避免因权限问题触发文件名转义。

修改后执行sudo mount -a重新挂载,再测试rsync同步。

针对NFS挂载的解决步骤

1. 调整TrueNAS的NFS共享配置

登录TrueNAS WebUI,找到对应的NFS共享并编辑:

  • NFS版本设置为至少4.0,优先选择4.2(NFSv4+对UTF-8和特殊字符的支持远好于旧版本的NFSv3);
  • 确认字符集设置为UTF-8

2. 优化客户端的NFS挂载参数

修改/etc/fstab里的NFS挂载行,使用新的NFS版本,示例如下:

你的TrueNASIP:/mnt/存储池/共享名 /本地挂载点 nfs nfsvers=4.2,rsize=1048576,wsize=1048576,hard,timeo=600 0 0

其中nfsvers=4.2是核心参数,确保协议版本支持特殊字符的正确传输。同样修改后执行sudo mount -a重新挂载测试。

额外的rsync参数建议

在执行rsync时,可以加上--iconv=utf-8,utf-8参数,强制指定字符集转换(虽然如果挂载配置正确的话可能不需要,但能进一步避免字符编码问题),示例命令:

rsync -av --iconv=utf-8,utf-8 /源目录/ /NAS挂载目录/

-a是归档模式,会保留文件的权限、属性等信息,也是rsync同步时常用的参数。

为什么ext4挂载没有问题

ext4文件系统本身对文件名的限制极少,支持几乎所有Unicode字符,而且是本地磁盘挂载,不需要经过网络协议的转换和处理,所以不会触发短文件名转义的逻辑,文件名自然保持原样。

备注:内容来源于stack exchange,提问作者Lost_Ones

火山引擎 最新活动