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

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

我正在尝试将一个 6GB 的文件复制到 USB 闪存驱动器,但无法复制。

答案1

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

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

答案2

如果你不想重新格式化你的 USB 驱动器或需要将其格式化为 FAT32,你可以简单地分裂将您的大文件分成几部分。大多数存档管理器都带有拆分选项,对于命令行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吉比特(GiB,那是不是与 Gigabyte GB 相同)减 1 个字节
谢谢吉尔斯对于这一重要的补充。


在您再次访问该文件之前,您需要合并首先查看其各个部分。在 Linux 系统上,你可以使用以下命令执行此操作:

cat output.file.* > input.file

如果你担心这可能会错误地排序文件,请阅读在 Bash 中,通配符扩展是否保证按顺序?
Windows系统上对应的命令是:

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

还有很多其他有用的 GNU 实用程序split也可以安装在 Windows 中,请参阅适用于 Win32 的 GNU 实用程序

答案3

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

研究不同的场景和文件系统,寻找替代方案,同时考虑到

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

仅限 Linux

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

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

与 Linux、Windows 和 MacOS 完全兼容

Windows 与 Linux 文件系统存在问题,我认为 MacOS 与 Linux 文件系统都存在问题,NTFS。因此,如果您想要“完全兼容”的读写功能,则只需FAT32自定义函数外置FAT保持。

  • FAT32文件大小限制为 4GiB(吉比字节,以 2 为基数)。

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

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

  • 可以在 Ubuntu 中使用随dosfsck软件包提供的进行维护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 中的第一个分区。

  • 外置FAT是另一种选择。与……相比,FAT32自定义函数并声称效果很好

  • 原生支持 Windows

  • 与 MacOS

  • 使用 Linux

有关 exFAT 的更多信息

2021 年 8 月编辑:

自从这个答案写下来后,对 exFAT 的支持就捆绑在标准 Ubuntu 的新版本中,因此您不需要额外的软件包来运行它。

編輯結束

我已经开始测试外置FAT在 Ubuntu 中。我打算在有更多使用经验后编辑此答案。让我们从以下内容开始链接

外置FAT是微软专有的文件系统,针对

> embedded systems because it is lightweight and is better suited for
> solutions that have low memory and low power requirements, and can be
> implemented in firmware.

和这个命令行在 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中维护。

我的第一次检测结果

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

视窗

因此,如果你想要从 Ubuntu 和 Windows 获得完全的读/写访问权限,我建议你使用NTFS,它具有日志功能,并且作为 Windows 的 [专有] 文件系统,经过了高度调试和完善。(也可以使用外置FAT

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

  • 在 Windows 中,可以轻松创建 NTFS 和 exFAT 文件系统(它们是原生的)。


  • 自定义函数可能缺少修复文件系统的工具,

  • 自由/源码软件

  • 也许可以通过此链接在 Windows 中找到修复工具:UDF 的 fsck 工具并且有一些工具可以作为源代码使用

  • 可以在 Ubuntu 中创建

  • 与 Linux 风格的链接兼容。

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

  • UDF 分区不会在 Windows 10 上提示格式化(而 Linux ext4 文件系统会受到影响,并且可能会被错误破坏)。

  • 如何创建和使用UDF:使用 UDF 作为 USB 驱动器 FAT 的后继者

    因此,要使用它,假设您的 USB 记忆棒是/dev/sdx

  1. 安装包udftools

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

  3. 使用危险命令擦除目标分区的第一个 mibibyte 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
    

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

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

    此后,您的 USB 记忆棒将可用于 GNU/Linux 的读写,也可用于当前版本的 Windows(旧版 XP 为只读)。遗憾的是,在 Linux 中创建的此 UDF 版本无法由 MacOS 管理(已在 2020 年 11 月的多个 MacOS 版本中测试)。

苹果系统

2021 年 8 月编辑:HFS+(已发表)

自从写了这个答案后,我发现Linux可以读写HFS+(日志式),因此使用 Mac 上的 Disk Utility.app 以 HFS+(日志式)格式化分区,以便拥有可以在 Ubuntu 和 MacOS 之间传输或共享数据的驱动器(例如外部驱动器)。

看:https://superuser.com/questions/392702/which-file-system-to-use-in-between-osx-and-linux

編輯結束

在 MacOS 中可以使用FAT32外置FAT

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

请参阅此链接:在 OS X Yosemite 上使用 ext4,虽然漫长却安全

答案4

如果您有 Windows 计算机,则可以转换 USB 棒文件系统而无需格式化。您应该使用 Windows 命令行,如下所示:按Win + R,键入cmd-> OK,在打开的窗口中输入命令convert X: /FS:ntfs,其中X:是您安装的 USB 棒的字母。不到一分钟即可完成。尽情享受吧。

相关内容