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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1296912
Accepted
Great Canadian Moose
Great Canadian Moose
Asked: 2020-12-03 05:43:22 +0800 CST2020-12-03 05:43:22 +0800 CST 2020-12-03 05:43:22 +0800 CST

数以百万计的文件夹导致 USB 无响应

  • 772

我最终做了一个实验,看看我可以在 16GB USB 上容纳多少个文件夹(为了好玩)所以我得到了一个树莓派,并运行程序来生成新文件夹,直到它崩溃。

当我将驱动器插入我的主计算机并在终端 /media/username/ 中导航到它并输入 ls 时,程序会挂起试图找到它。其次,当您单击驱动器时,在默认磁盘管理器中打开它会冻结程序。最后,Nautilis 有效,但它处于一个长循环中,一个小时后无处可去。(USB 是一个 NTFS 文件系统,有超过 300 万个文件夹)

我是否只使用 gparted 并擦除设备?或者有没有办法访问这些文件夹?

谢谢,驼鹿

usb directory c++ 18.04
  • 2 2 个回答
  • 49 Views

2 个回答

  • Voted
  1. Jaap Joris Vens
    2020-12-14T12:14:48+08:002020-12-14T12:14:48+08:00

    文件系统使用存储在设备上的索引表来识别与文件关联的数据存储区域链,即文件分配表 (FAT)。FAT 是在格式化时静态分配的. 该表是每个集群(磁盘存储的连续区域)的条目链接列表。每个条目要么包含文件中下一个簇的编号,要么包含指示文件结尾、未使用的磁盘空间或磁盘的特殊保留区域的标记。磁盘的根目录包含该目录中每个文件的第一个簇的编号。然后操作系统可以遍历 FAT,将磁盘文件的每个连续部分的簇号作为簇链查找,直到到达文件末尾。子目录被实现为包含它们各自文件的目录条目的特殊文件。

    (来源:维基百科。强调我的。)

    当您使用命令格式化驱动器时,您可以静态分配VFAT文件系统的 FAT mkfs.vfat。VFAT 是 USB 闪存驱动器支持最广泛的文件系统,所有操作系统都支持。NTFS 起源于 Windows,并且要高级得多,但以下概念仍然有助于理解。

    来自man mkfs.vfat:

       -f NUMBER-OF-FATS
           Specify the number of file allocation tables in the filesystem.  The
           default is 2.
    
       -F FAT-SIZE
           Specifies the type of file allocation tables used (12, 16 or 32 bit).
           If nothing is specified,  mkfs.fat will automatically select between 
           12, 16 and 32 bit, whatever fits better for the filesystem size.
    
       -r ROOT-DIR-ENTRIES
           Select the number of entries available in the root directory.  The
           default is 112 or 224 for floppies and 512 for hard disks.
    

    由于 VFAT 文件系统的 FAT 具有静态分配的大小,以后无法更改,因此它只能存储有限数量的文件。这是上面引用的维基百科文章的延续:

    FAT 链表中的每个条目都是固定位数:12、16 或 32。可以访问的文件或磁盘驱动器的最大大小是条目中可以存储的最大数字的乘积(减去保留一些值以指示未分配的空间或列表的结尾)和磁盘簇的大小。即使扩展一个文件只需要一个字节的存储空间,也必须为其分配整个集群,因此如果有大量小文件,大集群会浪费很多磁盘空间。

    这意味着您可以在文件系统上存储的文件数量完全取决于格式化驱动器时分配的大小。但是,有不能超过的理论最大值:

    • VFAT 文件系统的最大文件数为 268,435,437
    • NTFS 文件系统的最大文件数为 4,294,967,295

    最后,当您是 Ubuntu 用户时,这些都无关紧要。传统上,类 Unix 文件系统既不使用 VFAT 也不使用 NTFS 文件系统。类 Unix 文件系统没有 FAT 或 MFT,但分配了一个存储inode的inode 表。类 Windows(VFAT、NTFS)文件系统和类 Unix(ext2、ext3、ext4)的主要区别在于 Unix 不将文件名存储在分配表中,而是存储在称为目录的特殊文件中。传统上,一个经常著名的区别是碎片在 Unix 上的问题比在 Windows 上要小。

    因此,要从损坏的驱动器中获得最大的可用性,请使用命令重新格式化它mkfs.ext4或mke2fs. 请务必先阅读手册页!

    • 0
  2. Best Answer
    JamesIsIn
    2020-12-14T12:40:03+08:002020-12-14T12:40:03+08:00

    如果您想查看某些文件夹名称(或者甚至 grep 来细化哪些文件夹),您可以通过更少或更多管道 ls。

    您也应该能够使用 rmdir 删除部分或全部这些目录。

    如果您需要代码示例,请告诉我;但是这些命令使用起来很清楚。

    • 0

相关问题

  • 如何在连接 MTP 设备时禁用自动播放功能?

  • 如何在不更改名称的情况下隐藏目录或文件?

  • 我这里有一个 22 号陷阱!除非我更新,否则没有互联网[关闭]

  • 修复 USB 驱动器自动通知

  • 如何从命令行重置 USB 设备?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve