易君召
发布于 2026-04-30 / 3 阅读
0
0

Linux系统编码错误导致的损坏文件如何删除

最近遇到一个很奇怪的问题,Linux系统上在home目录下有个乱码的文件,显示大小为0字节,无法定位到这个文件,更无法使用rm命令删除。

这是一个 空文件(大小 0 字节),文件名包含大量的 非 ASCII 字节序列$'\307'$'\216\255' 等八进制转义),这些是 UTF-8 解码失败的二进制乱码。

问题诊断:编码错乱 + SFTP 传输断裂

根因分析

这个文件名是由 多个编码层叠加错误 导致的:

  1. 文件名是 GBK/GB2312 等中文编码的二进制字节序列,被错误地按 UTF-8 或其他编码写入

  2. $'\307' = 0xC7,是 GBK 编码的汉字首字节,但后面字节被截断或混杂

  3. 文件中有一个叫 services:冒号结尾文件(第 449 字节),也说明可能是 lrzsz/sz/rz 工具传输时没有正确解析文件名

最可能的场景

用类似 Xshell + lrzsz (sz/rz)SecureCRT + ZModem 上传文件时:

  • 文件名包含中文

  • 本地系统编码是 GBK/GB2312(Windows 默认)

  • 服务器 locale 是 UTF-8

  • 传输中断/乱码导致文件名被截断或混入多余字节

解决:删除这个文件

直接 rm 这个乱码文件名会失败,因为 shell 无法正确解析。用 inode 号 删除:

# 先找到 inode 号
ls -li /home/yijunzhao/

然后把输出中的 inode 号

或者在服务器上直接运行:

ls -li /home/yijunzhao/ | grep -v '/' | head

找到乱码文件的 inode 后:

sudo find /home/yijunzhao/ -inum <INODE号> -delete

实际操作处理如下

 [yijunzhao@yijunzhao ~]$ ls -li /home/yijunzhao/
total 191056
   469427 -rw-r--r-- 1 root      root           5212 Feb 17  2022  erlang-24.0-1.el7.x86_64.rpm
   464029 -rw-rw-r-- 1 yijunzhao yijunzhao         0 Jul  1  2022 ''$'\307''EwL5'$'\216\255''Kt'$'\310''s'$'\242''d'$'\230''Z'$'\247\345\372\304''B'$'\315\342''O'$'\365\366        ''FBO'$'\324'
134221147 drwxrwxr-x 3 yijunzhao yijunzhao        46 Apr 30 08:55  halo
  6120965 drwxrwxr-x 3 yijunzhao yijunzhao       108 Apr 25 10:34  hermes-agent
  6118395 -rw-rw-r-- 1 yijunzhao yijunzhao      1418 Apr 25 07:46  hermes-gateway.log
 43314527 drwxrwxr-x 3 yijunzhao yijunzhao       135 Apr 29 18:37  hermes-webui
 69833023 drwxr-xr-x 8 yijunzhao yijunzhao       273 Apr 26  2022  jdk1.8.0_333
   464063 -rw-r--r-- 1 yijunzhao yijunzhao 148003421 Jul  1  2022  jdk-8u333-linux-x64.tar.gz
 84641279 drwxrwxr-x 3 yijunzhao yijunzhao        26 Jul  1  2022  logs
   855258 -rw-r--r-- 1 yijunzhao yijunzhao      3187 Feb 17  2022  rabbitmq-release-signing-key.asc
   859727 -rw-r--r-- 1 yijunzhao yijunzhao  14645608 Feb 17  2022  rabbitmq-server-3.9.13-1.el8.noarch.rpm
117447102 drwxrwxr-x 6 yijunzhao yijunzhao       288 Jul  1  2022  rocketmq-all-4.9.4-bin-release
   460853 -rw-rw-r-- 1 yijunzhao yijunzhao  32967749 Jun 24  2022  rocketmq-all-4.9.4-bin-release.zip
   553451 -rw-rw-r-- 1 yijunzhao yijunzhao       449 Apr 28 22:08  services:
 52169140 drwxrwxr-x 6 yijunzhao yijunzhao       100 Jul  1  2022  store
 17254783 drwxrwxr-x 3 yijunzhao yijunzhao        44 Dec 10  2023  website
[yijunzhao@yijunzhao ~]$ find /home/yijunzhao/ -inum 464029 -delete
find: ‘/home/yijunzhao/hermes-agent/hermes_data’: Permission denied
[yijunzhao@yijunzhao ~]$ sudo find /home/yijunzhao/ -inum 464029 -delete
[sudo] password for yijunzhao:
[yijunzhao@yijunzhao ~]$ ll
total 191056
-rw-r--r-- 1 root      root           5212 Feb 17  2022 erlang-24.0-1.el7.x86_64.rpm
drwxrwxr-x 3 yijunzhao yijunzhao        46 Apr 30 08:55 halo
drwxrwxr-x 3 yijunzhao yijunzhao       108 Apr 25 10:34 hermes-agent
-rw-rw-r-- 1 yijunzhao yijunzhao      1418 Apr 25 07:46 hermes-gateway.log
drwxrwxr-x 3 yijunzhao yijunzhao       135 Apr 29 18:37 hermes-webui
drwxr-xr-x 8 yijunzhao yijunzhao       273 Apr 26  2022 jdk1.8.0_333
-rw-r--r-- 1 yijunzhao yijunzhao 148003421 Jul  1  2022 jdk-8u333-linux-x64.tar.gz
drwxrwxr-x 3 yijunzhao yijunzhao        26 Jul  1  2022 logs
-rw-r--r-- 1 yijunzhao yijunzhao      3187 Feb 17  2022 rabbitmq-release-signing-key.asc
-rw-r--r-- 1 yijunzhao yijunzhao  14645608 Feb 17  2022 rabbitmq-server-3.9.13-1.el8.noarch.rpm
drwxrwxr-x 6 yijunzhao yijunzhao       288 Jul  1  2022 rocketmq-all-4.9.4-bin-release
-rw-rw-r-- 1 yijunzhao yijunzhao  32967749 Jun 24  2022 rocketmq-all-4.9.4-bin-release.zip
-rw-rw-r-- 1 yijunzhao yijunzhao       449 Apr 28 22:08 services:
drwxrwxr-x 6 yijunzhao yijunzhao       100 Jul  1  2022 store
drwxrwxr-x 3 yijunzhao yijunzhao        44 Dec 10  2023 website


评论