当前位置: 首页>>技术问答>>正文


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

, ,

问题描述

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

最佳解决方法

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

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

次佳解决方法

如果您不想重新格式化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,与Gigabyte GB不同)减去1个字节。感谢Gilles这一重要补充。


在再次访问该文件之前,您需要先合并其部件。在Linux系统上,您可以使用:

cat output.file.* > input.file

如果你害怕这可能会错误地对文件进行排序读取In Bash, are wildcard expansions guaranteed to be in order? Windows系统上的相应命令是:

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

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

第三种解决方法

问题:FAT32对文件大小有4GiB限制

检查不同的场景和文件系统,寻找考虑的替代方案

  • 文件大小问题

  • 哪些操作系统应该读/写USB驱动器

仅限Linux

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

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

完全兼容Linux,Windows和MacOS

Windows存在linux文件系统问题,我认为MacOS在linux文件系统和NTFS方面都存在问题。因此,如果您想要’full compatibility’进行读写,则只保留FAT32,UDF和exFAT。

  • FAT32对文件大小有4GiB(gibibyte,base 2)限制。

    • 可以在所有三个操作系统中创建。

    • 如果您可以访问Windows,请在Windows中维护(修复)。

    • 可以使用dosfstools包附带的dosfsck在Ubuntu中维护,

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

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

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

    • FOSS

    • 也许有可能通过以下链接在Windows中找到修复工具:fsck tools for UDF,并且有一些工具可用作源代码

    • 可以在Ubuntu中创建

    • 兼容linux风格的链接。

    • 兼容linux样式权限。您可以创建和修改单个文件的权限(FAT和NTFS无法实现)。

    • Windows 10不会提示UDF分区进行格式化(而linux ext4文件系统会受到影响,并且可能会被误删除)。

    • 如何创建和使用UDF:Using the UDF as a successor of FAT for USB sticks

      因此,要使用它,假设你的USB memory 棒是/dev/sdx

      1. 安装包udftools

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

      3. 用危险的dd擦除目标分区的第一个mibibyte(double-check命令行!)

        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
        

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

      -b 512用于强制文件系统块大小等于USB棒的物理块大小,这是UDF规范所要求的。如果你有幸拥有一个更合适的块大小的USB memory 棒,请调整它。

      之后,您的USB memory 棒可用于GNU /Linux和其他免费操作系统的读写,当然还有当前版本的Windows(read-only和过时的XP版本)和MacOS。

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

    • 原生与Windows

    • 与MacOS

    • 用Linux

更多关于exFAT的信息

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

这个命令行在Ubuntu中安装exFAT的[read /write]支持

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 co-operated正确而快速(我用md5sum检查并且速度受到USB系统的限制)。

  • Ubuntu和Windows可以读取在其他操作系统中创建的内容。 (我没有MacOS进行测试,必须依赖其他人的报告。)

Windows

因此,如果你想要从Ubuntu和Windows获得完全的读/写访问权限,我建议你使用NTFS,它具有日志功能,并且作为Windows的[专有]文件系统进行了非常好的调试和优化。 (也可以使用exFAT。)

  • 在Ubuntu中,您可以使用GUI程序gparted来创建NTFS文件系统。

  • 在Windows中,很容易创建NTFS和exFAT文件系统(它们是本机的)。

MacOS

在MacOS中,可以使用FAT32,UDF和exFAT。

您还可以使用ext4解决方法,在虚拟机中使用带有SSH服务器的Ubuntu Server。 (我认为同样的解决方法也适用于Windows。)当您打算通过驱动器及其文件系统访问大量文件时,这可能是值得的,但可能不适用于小型USB2 pendrive。

看到这个链接,

Using ext4 on OS X Yosemite, the long but safe way

第四种方法

有一个类似的问题并且不愿重新格式化USB memory 棒,我只使用了一个归档器。或多或少所有现代GUI(例如File Roller,7Zip等)或CLI都允许拆分存档文件。将分割限制设置在FAT边界以下(有点4GB),对于速度你可以选择低压缩率,甚至”store”,即根本不压缩,瞧!

第五种方法

如果您有权访问Windows计算机,则无需格式化即可转换为USB-stick文件系统。您应该按如下方式使用Windows命令行:按Win + R,键入cmd – > OK,在打开的窗口中输入命令convert X: /FS:ntfs,其中X:是您安装的USB-stick的字母。不到一分钟就准备好了。请享用。

第六种方法

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2148.html,未经允许,请勿转载。