如何将大于4GB的文件复制到USB闪存驱动器?


53

我正在尝试将6GB文件复制到USB闪存驱动器,但不会复制。


23
USB驱动器是否已格式化为FAT32?该文件系统不支持大于4GB的文件。您必须然后以不同的方式设置其格式,例如NTFS。请注意,格式化会删除驱动器上的所有数据。
字节指挥官

14
您能否在“不会复制”的问题中提供更多详细信息?您尝试了什么命令?您得到什么错误信息?(如果将来有人遇到相同的问题并正在寻找答案,这些功能将非常有帮助。)
psmears

2
谷歌“无法复制大于4GB的文件”,您将在
stackexchange

5
包括USB的大小也可能会有所帮助
George Tian

3
@Nukeface您能否提供答案以及有关操作方法的说明?留下一个半答案作为评论通常可能弊大于利。谢谢。
伊利亚·卡根

Answers:


108

这是由于FAT32限制。大于4GB的文件无法存储在FAT32卷上。将闪存驱动器格式化为exFAT或NTFS将解决此问题。

警告:备份您的数据。格式化将删除设备上的所有数据。


20
顺便说一句,格式化闪存驱动器ext3也是一种选择
Basile Starynkevitch

18
@BasileStarynkevitch是的,但是在某些专有操作系统上不是很有用;)
Ruslan

11
@Ruslan:我第二个。与在Linux中使用exFat和NTFS相比,在Windows上使用ext3 / 4更加痛苦。
2015年

13
即使它是Microsoft的创造,对于exFAT也有很多话要说。正如其他人指出的那样,这是由所有三个桌面操作系统处理的,因此,您将趋向于最大限度地提高互操作性。此外,它还设计用于大型闪存驱动器。引文:en.wikipedia.org/wiki/ExFAT 特别是因为它可以将文件标记为连续文件,从而避免触摸FAT,因此在OP用例中非常有效:处理非常大的文件。
dgnuff

8
@dgnuff,您的意思是,所有三个主要的台式机操作系统:)
dn3s

91

如果您不想重新格式化USB驱动器或将其设为FAT32,则可以将大文件拆分为多个部分。大多数存档管理器都带有split选项,命令行中有split,例如,针对您的情况:

split -b4294967295 /path/to/input.file /path/to/pen/drive/output.file.

请参阅man split完整的文档。这将创建以下文件:

4,0G output.file.aa
1,6G output.file.ab

的文件大小output.file.aa比赛正是你的FAT32格式的USB驱动器,这是最大文件大小4 Gibibyte(GIB,这是一样的技嘉GB)减去1个字节
感谢Gilles所做的重要补充。


您需要先合并其各个部分,然后才能再次访问该文件。在Linux系统上,您可以执行以下操作:

cat output.file.* > input.file

如果您担心这可能会错误地对文件进行排序,那么In Bash中的通配符扩展是否一定能正常进行?
Windows系统上的相应命令是:

copy /b output.file.aa+output.file.ab input.file

连同许多其他有用的GNU实用程序split也可以安装在Windows中,请参阅Win32的GNU实用程序


2
我敢打赌我在这里获得的投票的一半仅仅是因为GiB vs. GB。;)
甜点

2
split即使没有GiB和GB之间的区别,我也会赞成。但是我会为此派遣一名男生……
Zeiss Ikon

1
@dessert我希望这只会使您的投票增加7.4%左右。
伊莱亚·卡根

1
我之所以投票是因为重新格式化驱动器,使其仅能移动一个大文件,这是一个可怕的答案,而split正是为此目的而存在的,并且接收端并不需要这样做。FAT32是USB驱动器的通用语言。
Monty Harder

我认为-b 4095M会简单得多,并且可以达到与bc命令相同的效果。在Bash中,也可以使用shell算术:$(((4<<30)-1))
大卫·佛斯特

39

问题:FAT32的文件大小限制为4GiB

检查了不同的方案和文件系统,以考虑替代方案

  • 文件大小问题
  • 哪些操作系统应该读取/写入USB驱动器

仅Linux

如果打算仅在Ubuntu(和其他Linux发行版)上使用驱动器,则最好使用Linux文件系统,例如ext4。这样,您可能会获得更高的读/写速度(取决于哪个进程是瓶颈),并且您将在所有权和权限方面获得更高的灵活性。

  • 您可以使用GUI程序gparted来创建ext4文件系统。

与Linux,Windows和MacOS完全兼容

Windows在linux文件系统上有问题,我认为MacOS在linux文件系统和NTFS上都有问题。因此,如果您希望读写具有“完全兼容性”,则仅保留FAT32UDFexFAT

  • FAT32的文件大小限制为4GiB(千兆字节,基数2)。

    • 可以在所有三个操作系统中创建。
    • 如果可以访问Windows,请在Windows中进行维护(修复)。
    • 可以dosfsck使用软件包随附的,在Ubuntu中进行维护dosfstools

      sudo apt-get install dosfstools
      
      sudo dosfsck -a /dev/sdxn  # least destructive option
      sudo dosfsck -r /dev/sdxn  # more powerful option
      

      其中x是驱动器号,n是分区号,例如/dev/sdb1驱动器b中的第一个分区。

  • UDF可能缺少修复文件系统的工具,

    • 福斯
    • 也许可以通过以下链接在Windows中找到修复工具:用于UDF的fsck工具,并且有一些工具可用作源代码。
    • 可以在Ubuntu中创建
    • 与linux样式链接兼容。
    • 与linux样式权限兼容。您可以创建和修改单个文件的权限(FAT和NTFS无法实现)。
    • Windows 10不会提示UDF分区进行格式化(而linux ext4文件系统受到影响,并且可能被错误地破坏)。
    • 如何创建和使用UDF:将UDF用作USB记忆棒的FAT的后继产品

      因此,假设您的USB记忆棒是/dev/sdx

      1. 安装套件 udftools

        sudo apt-get install udftools
        
      2. 使用gparted或创建一个分区表和一个分区gnome-disks

      3. 用危险擦拭目标分区的第一个兆字节dd(仔细检查命令行!)

        sudo dd if=/dev/zero of=/dev/sdx1 bs=1M count=1
        
      4. 运行mkudffs

        sudo mkudffs -b 512 --media-type=hd --lvid=my-label /dev/sdx1
        

      擦除分区的第一个兆字节以擦除先前的文件系统信息(或其他剩余数据),以防止在使用UDF格式化USB棒后将其检测为FAT。

      -b 512是为了强制文件系统块大小等于UDF规范要求的USB记忆棒的物理块大小。如果您幸运地拥有一个具有合适块尺寸的USB记忆棒,请对其进行调整。

      之后,您的USB记忆棒将可用于GNU / Linux和其他免费操作系统的读写,当然也可用于Windows的当前版本(对于过时的XP只读)和MacOS。

  • exFAT是另一种选择。 FAT32 UDF相比,它是新的,并且声称效果很好

    • Windows本机
    • 使用MacOS
    • 使用Linux

有关exFAT的更多信息

我已经开始在Ubuntu中测试exFAT。当我有更多使用经验时,我打算编辑此答案。让我们从以下链接开始,

和此命令行在 Ubuntu中安装对exFAT的[读/写]支持

sudo apt-get install exfat-utils exfat-fuse
  • 可以使用以下命令行在Windows和MacOS 以及Linux中创建

    sudo mkfs.exfat -n YOUR-LABEL /dev/sdxi
    

    例如,其中x是驱动器号和i分区号/dev/sdb1

  • 可以在Windows中维护。

我的第一个测试结果

  • 创建exFAT文件系统在Ubuntu(16.04 LTS(64位),已安装Xenial内核系列(4.4.0-93-generic,最新)的系统)中运行良好。
  • 写入和读取大于4 GiB的文件成功。Ubuntu和exFAT可以正确且快速地进行协作(我检查过md5sum,速度受到USB系统的限制)。
  • Ubuntu和Windows可以读取在其他操作系统中创建的内容。(我没有用于测试的MacOS,必须依靠其他人的报告。)

视窗

因此,如果您想从Ubuntu和Windows获得完全的读/写访问权限,我建议您使用NTFS,它具有日记功能,并且经过调试和完善,是Windows的[专有]文件系统。(也可以使用exFAT。)

  • 在Ubuntu中,您可以使用GUI程序gparted来创建NTFS文件系统。
  • 在Windows中,很容易创建NTFS和exFAT文件系统(它们是本机的)。

苹果系统

在MacOS中,可以使用FAT32UDFexFAT

您还可以将ext4与解决方法结合使用,将Ubuntu Server与虚拟机中的SSH服务器结合使用。(我认为相同的解决方法也适用于Windows。)当您打算通过驱动器及其文件系统访问许多文件时,这可能是值得的,但对于小型USB2 Pendrive而言可能不是。

看到这个链接,

在OS X Yosemite上使用ext4,这是漫长而安全的方法


3
AFAIR Windows XP无法写入UDF卷。如今,这已不是什么大问题,但还是值得一提,以防万一。
gronostaj

2
macOS默认将所有内容安装为只读NTFS(我认为Apple认为NTFS写入支持不够可靠。)
gsnedders

1
@gsnedders我希望他们只是不相信Windows。
wizzwizz17年

2
@sudodus就个人而言,从繁重的NTFS分区管理到从Debian操纵Streams,我都没有遇到任何问题,但我对数据的安全表示赞赏。另外,我有一个备份,所以丢失旧数据也没关系(我可以从备份中复制它)。
wizzwizz17年

2
注意:您可以在MacOS上使用exfat,而不会出现问题(它甚至可以将驱动器格式化为exfat)。exfat也已成为更大的闪存盘/存储卡的默认设置。
SztupY

11

有一个类似的问题,并且不愿意重新格式化USB记忆棒,我只是使用了一个存档器。或多或少的所有现代GUI(例如File Roller,7Zip等)或CLI都允许拆分存档文件。将分割限制设置在FAT边界(大约4GB)以下,为提高速度,您可以选择较低的压缩率,甚至可以选择“存储”,即完全不压缩,瞧!


5

如果可以访问Windows计算机,则可以不格式化就转换USB记忆棒文件系统。您应该使用Windows命令行,如下所示:按Win + R,键入cmd-> OK,在打开的窗口中输入命令convert X: /FS:ntfswhere X:是已安装USB记忆棒的字母。不到一分钟的时间就可以准备好了。请享用。


2
这种方法可能有用:-)但是转换文件系统可能会带来风险,因此我建议在转换之前备份 USB记忆棒上的所有重要内容。顺便问一下,您使用过这种方法吗?是否保留文件?它也可以在出院时使用吗?
sudodus

1
我多次使用此方法,此过程后所有文件都可读。该实用程序仅能转换为NTFS,反之亦然。
M. Dm。

2

重新格式化或使用拆分是不错的选择,或者您可以尝试使用zip压缩文件,只是知道某些文件已被压缩,因此压缩它们会使它们更大。(此外,您可能会丢失文件所有权,时间戳等)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.