复制到 USB 驱动器会修改文件名

复制到 USB 驱动器会修改文件名

我有一个 bash 脚本,可以将数据复制到 USB 记忆棒上。有用。数据复制得很好,但文件名总是会改变。它们与以前相同,但任何较长的名称都会被削减为仅 8 个字符长,并且扩展名仅 3 个字符长(总共最多 11 个字符)。

因此,名为“willGetCutShorter.html”的原始文件在驱动器上变为“willGetS.htm”,而“small.txt”保持不变。复制的目录名称以相同的方式剪切,全部显示 8 个字符长(当然,它们没有扩展名)。

我不希望这种事发生。我希望文件和目录名称根本不被修改。我也不知道为什么会出现这种情况。

在我的 bash 脚本中,我将计算机目录中的所有内容复制到驱动器,使用星号代表所有计算机目录内容。我想知道这是否是原因?也许 cp 仅获取文件名的一部分?

此外,在 Linux 中,文件全部以小写形式显示,甚至最初部分大写的文件也是如此。然而在 Windows 中,所有文件和文件夹都是大写的。

为什么?

编辑#1

在开始以这种方式使用 USB 驱动器之前,我在 Windows 7 机器上格式化了 USB 驱动器。在我的/etc/fstab文件中,我添加了一个将其安装为 msdos 的驱动器条目。这是因为我读了一个手册页(可能是“man mount”),它说驱动器格式(FAT32)被msdos覆盖。

我想使用 FAT32 作为文件系统类型来安装它,但我在安装手册页中看不到该选项。 fstab 条目意味着 mount 命令仅包含以下内容:

sudo mount /mnt/

bash脚本中的复制命令都是这样的:

cp -f -r /path/to/dir/* /mnt/to/dir/

听起来我只需要将驱动器重新格式化为其他东西,或者以稍微不同的方式安装它?

答案1

我怀疑您正在使用如下所示的安装命令:

      mount -t msdos /dev/XYZ /mnt/test

这将强制将分区安装在使用 8.3 文件名约定的旧版 DOS FAT 文件系统中(请参阅https://en.wikipedia.org/wiki/8.3_filename) 而不是使用长文件名的 vfat (https://en.wikipedia.org/wiki/Long_filename)。

建议使用以下任一选项进行安装:

      mount /dev/XYZ /mnt/test     (by default uses vfat, if it is FATXX formatted USB stick)

或者

      mount -t vfat /dev/XYZ /mnt/test  (explicitly mount as vfat, if it is FATXX formatted USB stick)

答案2

它可能是 USB 存储上的文件系统。 FAT 文件系统仅支持8+3 个字符的文件名。这个文件系统非常古老。仅需要向后兼容非常旧的系统。

FAT 也只支持大写字符。由于这只是一种情况,因此可以选择将其映射为小写。这使得事情变得更加方便。由于您不必输入大写字母,因此目录列表看起来并不喧闹。

考虑使用 FAT32、ntfs、ext4 或其他格式。

相关内容