群晖乱码文件删不掉还报“文件不存在”?两招清掉

症状长什么样

File Station 里躺着几个文件名全是乱码符号的文件或文件夹,右键删除,弹出提示:下列项目发生错误 [文件路径](文件或目录不存在)。换 FTP 或其他文件服务去删,同样删不掉。

这类乱码文件多出现在两类场景:一是早期用 FTP 上传留下的存档——客户端代码页和 NAS 编码不一致,文件名落地时就是乱的;二是某些客户端经 SMB 访问时把文件名显示成 12HWA0~8 这类短名。按官方说明,根源是 NAS 与客户端之间的编码设置不匹配,删除、移动这类文件操作一执行就会出问题。

招一:把正常文件搬走,删掉整个父文件夹

不想碰命令行时用这招,前提是乱码文件和其他正常文件在同一个文件夹里:

  1. 把这个文件夹里的其他正常文件、文件夹复制粘贴到别的位置。
  2. 进入它的父文件夹,把整个文件夹删除。

正常内容已经搬走,乱码文件跟着父文件夹一起被清掉。名字乱没关系,删的是"装它的盒子"。

招二:SSH 按 inode 编号定点删除

文件夹不方便整体删除时,用 inode 编号绕开乱码文件名本身:

  1. 先备份。命令删除的文件无法恢复,用 Hyper Backup 备份该共享文件夹,或用 Snapshot Replication 为它拍个快照。
  2. 通过 SSH 以 root 权限登录群晖 NAS。
  3. 进入乱码文件所在目录,命令格式 cd /volume[X]/[共享文件夹名称],例如 cd /volume1/Test。不确定它在哪个存储空间,到 DSM 的控制面板 > 共享文件夹里查看。
  4. 输入 ls -i 并回车,列出目录下所有文件和文件夹,以及各自的 inode 编号(inode 是文件系统里描述文件对象的数据结构,相当于文件的内部编号)。
  5. 按 inode 删除:
    • 删乱码文件find -inum [乱码文件的 inode 号] -delete
    • 删乱码文件夹find -inum [乱码文件夹的 inode 号] -exec rm -rf {} \;
  6. 再跑一次 ls -i 检查删除结果。万一删错,从第 1 步做好的备份或快照里恢复。

验证

回到 File Station 刷新,目录里不再有乱码条目;确认清理干净后,前面留的备份数据或快照就可以删掉了。

一个坑

不要跳过备份直接跑命令——find -exec rm -rf 这条删错编号就是真没了,官方文档也把备份列为第一步而不是可选项。另外想根治乱码再现,把 FTP 服务编码固定为 UTF-8,并保证客户端代码页设置与 NAS 一致,否则清理完还会再攒出一批。

企业 NAS 里的乱码存档清理、编码规范化,贵州本地可以找诚鑫致达科技协助处理,顺带把数据备份机制一并建起来。