AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1749342
Accepted
Sepp A
Sepp A
Asked: 2022-10-26 02:46:11 +0800 CST2022-10-26 02:46:11 +0800 CST 2022-10-26 02:46:11 +0800 CST

rsync “文件名太长 (36)” 带有 UTF-8 字符的文件名错误

  • 772

尝试将文件从 NTFS 格式的 HDD 复制到 EXT4 格式的 HDD 时,rsync无法复制其中一些文件名相对较长且由亚洲 (UTF-8) 字符组成的文件。

例如,有一个文件名为:

动态网自由门 天安門 天安门 法輪功 李洪志 Free Tibet 六四天安門事件 The Tiananmen Square protests of 1989 天安門大屠殺 The Tiananmen Square Massacre 反右派鬥爭 The Anti-Rightist Struggle 大躍進政策 The Great Leap Forward 文化大革命.gif

它位于一个不那么短的目录路径中,并且rsync,即使复制它们-s并且--iconv=utf8无法复制它们,例如:

sending incremental file list

rsync: [generator] recv_generator: failed to stat "/path/to/file/\#345\#212\#250\#346\#200\#201\#347\#275\#221\#350\#207\#252\#347\#224\#261\#351\#227\#250 \#345\#244\#251\#345\#256\#211\#351\#226\#200 \#345\#244\#251\#345\#256\#211\#351\#227\#250 \#346\#263\#225\#350\#274\#252\#345\#212\#237 \#346\#235\#216\#346\#264\#252\#345\#277\#227 Free Tibet \#345\#205\#255\#345\#233\#233\#345\#244\#251\#345\#256\#211\#351\#226\#200\#344\#272\#213\#344\#273\#266 The Tiananmen Square protests of 1989 \#345\#244\#251\#345\#256\#211\#351\#226\#200\#345\#244\#247\#345\#261\#240\#346\#256\#272 The Tiananmen Square Massacre \#345\#217\#215\#345\#217\#263\#346\#264\#276\#351\#254\#245\#347\#210\#255 The Anti-Rightist Struggle \#345\#244\#247\#350\#272\#215\#351\#200\#262\#346\#224\#277\#347\#255\#226 The Great Leap Forward \#346\#226\#207\#345\#214\#226\#345\#244\#247\#351\#235\#251\#345\#221\#275.gif": File name too long (36)

有什么解决方法或解决方法吗?

linux rsync
  • 2 2 个回答
  • 28 Views

2 个回答

  • Voted
  1. harrymc
    2022-10-26T03:25:41+08:002022-10-26T03:25:41+08:00

    如 Unix StackExchange 上所述,ext4 系统中的最大文件名是 255 字节。另请注意,UTF8 中的非 ASCII 字符至少需要 2 个字节。

    在我看来,你已经超过了这个限制。

    • 0
  2. Best Answer
    phuclv
    2022-10-26T04:00:57+08:002022-10-26T04:00:57+08:00

    NTFS 中的文件名长度限制为255 个 UTF-16代码单元(CU)。动态网自由门 天安門 天安门 法輪功 李洪志 Free Tibet 六四天安門事件 The Tiananmen Square protests of 1989 天安門大屠殺 The Tiananmen Square Massacre 反右派鬥爭 The Anti-Rightist Struggle 大躍進政策 The Great Leap Forward 文化大革命.gif是UTF-16 中的 188-CU 字符串,但在 UTF-8 中以 280 个 CU编码,这显然超出了 ext4 中的限制(255 个 UTF-8 CU)

    UTF-8 将代码点 U+0800 到 U+FFFF 编码为 3 个字节,因此汉字和许多表情符号等高代码点将需要比 UTF-16 更多的字节来编码,并且生成的字符串会更长

    如果您想坚持使用本机 Linux 文件系统,一种解决方案是使用限制为 4032 字节的ReiserFS,即4032 UTF-8 CU,如果您想保留名称。或者使用Reiser4,它是 ReiserFS 的继任者。它的限制只有 3976 字节,但仍然绰绰有余。否则,您别无选择,只能截断名称

    对于非 Linux 文件系统,还有更多选项。所有 Windows 文件系统显然都可以工作,因为它们都以 UTF-16 工作。NTFS 和 exFAT 长期以来都在 Linux 中拥有出色的内核驱动程序,因此它们也是一个不错的选择。另一个可能的答案是HFS+,它也使用 UTF-16,但它是一个糟糕的 FS,所以远离它

    请参阅Linux 在多大程度上支持超过 255 个字节的文件名?


    您可以使用https://r12a.github.io/app-conversion/等工具来检查各种编码中的编码字节。上面的 UTF-16 字符串是

    52A8 6001 7F51 81EA 7531 95E8 0020 5929 5B89 9580 0020 5929 5B89 95E8 0020 6CD5
    8F2A 529F 0020 674E 6D2A 5FD7 0020 0046 0072 0065 0065 0020 0054 0069 0062 0065
    0074 0020 516D 56DB 5929 5B89 9580 4E8B 4EF6 0020 0054 0068 0065 0020 0054 0069
    0061 006E 0061 006E 006D 0065 006E 0020 0053 0071 0075 0061 0072 0065 0020 0070
    0072 006F 0074 0065 0073 0074 0073 0020 006F 0066 0020 0031 0039 0038 0039 0020
    5929 5B89 9580 5927 5C60 6BBA 0020 0054 0068 0065 0020 0054 0069 0061 006E 0061
    006E 006D 0065 006E 0020 0053 0071 0075 0061 0072 0065 0020 004D 0061 0073 0073
    0061 0063 0072 0065 0020 53CD 53F3 6D3E 9B25 722D 0020 0054 0068 0065 0020 0041
    006E 0074 0069 002D 0052 0069 0067 0068 0074 0069 0073 0074 0020 0053 0074 0072
    0075 0067 0067 006C 0065 0020 5927 8E8D 9032 653F 7B56 0020 0054 0068 0065 0020
    0047 0072 0065 0061 0074 0020 004C 0065 0061 0070 0020 0046 006F 0072 0077 0061
    0072 0064 0020 6587 5316 5927 9769 547D 002E 0067 0069 0066
    

    在 UTF-8 中是

    E5 8A A8 E6 80 81 E7 BD 91 E8 87 AA E7 94 B1 E9 97 A8 20 E5 A4 A9 E5 AE 89 E9
    96 80 20 E5 A4 A9 E5 AE 89 E9 97 A8 20 E6 B3 95 E8 BC AA E5 8A 9F 20 E6 9D 8E
    E6 B4 AA E5 BF 97 20 46 72 65 65 20 54 69 62 65 74 20 E5 85 AD E5 9B 9B E5 A4
    A9 E5 AE 89 E9 96 80 E4 BA 8B E4 BB B6 20 54 68 65 20 54 69 61 6E 61 6E 6D 65
    6E 20 53 71 75 61 72 65 20 70 72 6F 74 65 73 74 73 20 6F 66 20 31 39 38 39 20
    E5 A4 A9 E5 AE 89 E9 96 80 E5 A4 A7 E5 B1 A0 E6 AE BA 20 54 68 65 20 54 69 61
    6E 61 6E 6D 65 6E 20 53 71 75 61 72 65 20 4D 61 73 73 61 63 72 65 20 E5 8F 8D
    E5 8F B3 E6 B4 BE E9 AC A5 E7 88 AD 20 54 68 65 20 41 6E 74 69 2D 52 69 67 68
    74 69 73 74 20 53 74 72 75 67 67 6C 65 20 E5 A4 A7 E8 BA 8D E9 80 B2 E6 94 BF
    E7 AD 96 20 54 68 65 20 47 72 65 61 74 20 4C 65 61 70 20 46 6F 72 77 61 72 64
    20 E6 96 87 E5 8C 96 E5 A4 A7 E9 9D A9 E5 91 BD 2E 67 69 66
    
    • 0

相关问题

  • 如何让我的 Linux 机器看起来像是在运行 Windows?

  • 对于 cp 或 mv,是否有等同于 cd - 的东西?

  • 以 root 身份运行 docker 容器

  • 如何在域和 Linux 活动目录中启用指纹传感器

  • 如何在CentOS 7 中将Ctrl+C 永久更改为Ctrl+K?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve