复制到外部设备会弄乱 NixOS 中的特殊字符

复制到外部设备会弄乱 NixOS 中的特殊字符

我有一个 DAP(如 mp3 播放器),我正在尝试将我的电脑上的一个文件夹的内容同步到 DAP。这确实几乎按预期工作,但文件名发生了一些奇怪的事情。我正在与 rsync 同步,但是它也可以使用简单的 cp 'DR Pigekor - I østen stiger solen op.mp3' /mounted/device.

在另一台设备上它显示为'DR Pigekor - I østen stiger solen op.mp3'。我还检查了我的另一台运行 manjaro 的电脑,它显示了同样奇怪的标题,或者非常相似的东西,所以它不仅仅是 DAP。所有文件在我复制的 nixOS 机器上看起来都完全正常,无论是在安装的驱动器上还是在原始位置上。还应该注意的是,将文件从 manjaro 机器复制到 DAP 效果很好。

en_US.UTF-8顺便说一句,我的系统区域设置在两台机器上都应该是。

复制时如何保留文件名?

答案1

我对文件格式的理解是错误的。我运行此命令# fsck -N /dev/mmcblk0p1来检查格式,它输出如下:

[/run/current-system/sw/bin/fsck.ext2 (1) -- /dev/mmcblk0p1] fsck.ext2 /dev/mmcblk0p1

后来我发现这不是真的,实际的文件系统是 vfat,正如 Hermann 所建议的那样。使用此命令安装修复了问题:

# mount -t vfat /dev/mmcblk0p1 /path/to/mnt -o shortname=mixed -o utf8

“shortname=mixed”保留大小写,否则 vfat 会将任何 8 个字符或更少的文件名转换为小写(默认行为是“shortname=lowercase”)并导致 rsync 出现问题。 Windows 在挂载文件系统时使用 UTF8,因此我们指定它以确保以相同的方式挂载它(默认是挂载 iso-8859-1,即使底层 vfat 文件系统将以 UTF8 格式存储文件名)。

我在这个网站上找到了这个命令: https://www.clug.org/rsync-to-fat32-drives/

相关内容