群晖乱码文件删不掉还报“文件不存在”?两招清掉
症状长什么样
File Station 里躺着几个文件名全是乱码符号的文件或文件夹,右键删除,弹出提示:下列项目发生错误 [文件路径](文件或目录不存在)。换 FTP 或其他文件服务去删,同样删不掉。
这类乱码文件多出现在两类场景:一是早期用 FTP 上传留下的存档——客户端代码页和 NAS 编码不一致,文件名落地时就是乱的;二是某些客户端经 SMB 访问时把文件名显示成 12HWA0~8 这类短名。按官方说明,根源是 NAS 与客户端之间的编码设置不匹配,删除、移动这类文件操作一执行就会出问题。
招一:把正常文件搬走,删掉整个父文件夹
不想碰命令行时用这招,前提是乱码文件和其他正常文件在同一个文件夹里:
- 把这个文件夹里的其他正常文件、文件夹复制粘贴到别的位置。
- 进入它的父文件夹,把整个文件夹删除。
正常内容已经搬走,乱码文件跟着父文件夹一起被清掉。名字乱没关系,删的是"装它的盒子"。
招二:SSH 按 inode 编号定点删除
文件夹不方便整体删除时,用 inode 编号绕开乱码文件名本身:
- 先备份。命令删除的文件无法恢复,用 Hyper Backup 备份该共享文件夹,或用 Snapshot Replication 为它拍个快照。
- 通过 SSH 以 root 权限登录群晖 NAS。
- 进入乱码文件所在目录,命令格式
cd /volume[X]/[共享文件夹名称],例如cd /volume1/Test。不确定它在哪个存储空间,到 DSM 的控制面板 > 共享文件夹里查看。 - 输入
ls -i并回车,列出目录下所有文件和文件夹,以及各自的 inode 编号(inode 是文件系统里描述文件对象的数据结构,相当于文件的内部编号)。 - 按 inode 删除:
- 删乱码文件:
find -inum [乱码文件的 inode 号] -delete - 删乱码文件夹:
find -inum [乱码文件夹的 inode 号] -exec rm -rf {} \;
- 删乱码文件:
- 再跑一次
ls -i检查删除结果。万一删错,从第 1 步做好的备份或快照里恢复。
验证
回到 File Station 刷新,目录里不再有乱码条目;确认清理干净后,前面留的备份数据或快照就可以删掉了。
一个坑
不要跳过备份直接跑命令——find -exec rm -rf 这条删错编号就是真没了,官方文档也把备份列为第一步而不是可选项。另外想根治乱码再现,把 FTP 服务编码固定为 UTF-8,并保证客户端代码页设置与 NAS 一致,否则清理完还会再攒出一批。
企业 NAS 里的乱码存档清理、编码规范化,贵州本地可以找诚鑫致达科技协助处理,顺带把数据备份机制一并建起来。