将数据复制到未满的 USB 闪存驱动器时,Linux 返回“设备上没有剩余空间”

将数据复制到未满的 USB 闪存驱动器时,Linux 返回“设备上没有剩余空间”

我正在尝试将文件复制到 USB 闪存驱动器。该驱动器没有写保护开关。

df给出以下内容:

$ df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde1       1.9G  622M  1.3G  33% /media/lindenb/803C-078D

df -i产生了奇怪的输出(到处都是 0)

$ df -i .
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sde1           0     0     0     - /media/lindenb/803C-078D

驱动器上的文件数:

$ find . |wc -l
170

但是当我尝试复制文件时,出现以下信息:

$ mv ~/file.txt ./
mv: cannot create regular file ‘./file.txt’: No space left on device

我怎样才能解决这个问题 ?

答案1

FAT16 文件系统的根目录只能存储有限数量的文件条目

  • 您的闪存驱动器大小为 2 GB。这是 FAT16 支持的最大文件系统大小。因此,它很可能在出厂时就已使用 FAT16 文件系统格式化。

  • 由于 FAT16 文件系统的技术限制,只有有限数量的文件条目可以存储在根目录中。此限制是在格式化文件系统时设置的(来源). 目录条目(可能包括长文件名信息)但不包含目录内容,均计入此限制。

  • 为了解决这个问题,将文件系统转换为 FAT32。在 Linux 上,最好的办法可能是将所有文件移动到临时位置,卸载驱动器,用重新格式化为 FAT32 mkfs.vfat -F 32 /dev/sde1,然后安装驱动器并将文件移回。

Windows 8 针对 FAT16 卷上的完整根目录生成错误消息

答案2

当我收到此信息时,我发现,由于我从未完全理解的原因,USB 设备已将自身置于只读模式或被操作系统标记为只读。我发现修复此问题的唯一方法是备份闪存设备上的信息并重新创建其分区表、分区和文件系统。在 Linux 中,您可以使用 fdisk 或分区编辑器(如 gparted 或 KDE 分区管理器)执行此操作(上次我不得不这样做时,由于递归分区表条目,fdisk 和 gparted 不会触及它,我不得不在 KDE 分区管理器中运行该过程两次才能完成)。

相关内容