如何将大于4GB的文件复制到USB闪存盘?
我正在尝试将6GB文件复制到USB闪存驱动器,但它不会复制。
这是由于FAT32限制。 大于4GB的文件不能存储在FAT32卷上。 将闪存驱动器格式化为exFAT或NTFS将解决此问题。
警告:备份您的数据。 格式化将删除设备上的所有数据。
如果您不想重新格式化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 Gibibyte (GiB,与Gigabyte GB不同) 减去1字节 。
感谢Gilles这个重要的补充。
在再次访问该文件之前,您需要先合并其部件。 在Linux系统上,您可以使用:
cat output.file.* > input.file
如果您担心这可能会错误地将文件排序为In Bash,那么通配符扩展是否保证有序?
Windows系统上的相应命令是:
copy /b output.file.aa+output.file.ab input.file
除了许多其他有用的GNU实用程序之外,还可以在Windows中安装split
,请参阅Win32的GNU实用程序 。
问题:FAT32对文件大小有4GiB限制
检查不同的场景和文件系统,寻找考虑的替代方案
- 文件大小问题
- 哪些操作系统应该读/写USB驱动器
仅限Linux
如果您打算仅将驱动器与Ubuntu(和其他Linux发行版)一起使用,那么最好使用linux文件系统 ,例如ext4 。 这样,您可以获得更高的读/写速度(取决于哪个进程是瓶颈),并且您将获得更高的所有权和权限灵活性。
- 您可以使用
gparted
的GUI程序来创建ext4文件系统。
完全兼容Linux,Windows和MacOS
Windows在linux文件系统方面存在问题,我认为MacOS在linux文件系统和NTFS方面都存在问题。 因此,如果您想要“完全兼容”进行读写,则只保留FAT32 , UDF和exFAT 。
-
FAT32对文件大小有4GiB(gibibyte,base 2)限制。
- 可以在所有三个操作系统中创建。
- 如果您可以访问Windows,则在Windows中维护(修复)。
-
可以用
dosfsck
在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是分区号,例如驱动器b中第一个分区的
/dev/sdb1
。
-
UDF可能缺少修复文件系统的工具,
- FOSS
- 也许有可能通过以下链接在Windows中找到修复工具: 用于UDF的fsck工具 ,并且有一些工具可用作源代码
- 可以在Ubuntu中创建
- 兼容linux风格的链接。
- 兼容linux样式权限。 您可以创建和修改单个文件的权限(FAT和NTFS无法实现)。
- Windows 10不会提示UDF分区进行格式化(而linux ext4文件系统会受到影响,并且可能会被误删除)。
-
如何创建和使用UDF: 使用UDF作为USB棒的FAT后继
所以,要使用它,假设你的USB棒是
/dev/sdx
:-
安装包
udftools
sudo apt-get install udftools
-
使用
gparted
或gnome-disks
创建分区表和一个分区 -
用危险的
dd
擦除目标分区的第一个mibibyte(仔细检查命令行!)sudo dd if=/dev/zero of=/dev/sdx1 bs=1M count=1
-
运行
mkudffs
,sudo mkudffs -b 512 --media-type=hd --lvid=my-label /dev/sdx1
擦除分区的第一个mibibyte以清除以前的文件系统信息(或其他剩余数据),以防止USB棒在使用UDF格式化后被检测为FAT。
-b 512
用于强制文件系统块大小等于USB棒的物理块大小,这是UDF规范所要求的。 如果你有幸拥有一个更合适的块大小的USB记忆棒,请调整它。之后,您的USB记忆棒可用于GNU / Linux和其他免费操作系统的读写,当然还有当前版本的Windows(只读过时的XP版本)和MacOS。
-
-
exFAT是另一种选择。 它与FAT32和UDF相比是新的,并声称效果很好
- 原生与Windows
- 与MacOS
- 用Linux
更多关于exFAT的信息
我已经开始在Ubuntu中测试exFAT了。 当我有更多使用它的经验时,我打算编辑这个答案。 让我们从以下链接开始,
-
en.wikipedia.org/wiki/ExFAT
ExFAT是Microsoft优化的专有文件系统
嵌入式系统,因为它重量轻,更适合具有低内存和低功耗要求的解决方案,并且可以在固件中实现。
-
如何获得使用exfat格式化的驱动器(在Ubuntu中)
这个命令行在 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正确且快速地合作(我用
md5sum
检查并且速度受到USB系统的限制)。 - Ubuntu和Windows可以读取在其他操作系统中创建的内容。 (我没有MacOS进行测试,必须依赖其他人的报告。)
视窗
因此,如果您想要从Ubuntu和Windows获得完全读/写访问权限,我建议您使用NTFS ,它具有日志function,并且作为Windows的[专有]文件系统进行了大量调试和优化。 (也可以使用exFAT 。)
- 在Ubuntu中,您可以使用
gparted
的GUI程序来创建NTFS文件系统。 - 在Windows中,很容易创建NTFS和exFAT文件系统(它们是本机的)。
苹果系统
在MacOS中,可以使用FAT32 , UDF和exFAT 。
您还可以使用ext4解决方法,在虚拟机中使用带有SSH服务器的Ubuntu Server 。 (我认为同样的解决方法也适用于Windows。)当您打算通过驱动器及其文件系统访问大量文件时,这可能是值得的,但可能不适用于小型USB2 pendrive。
看到这个链接,
在OS X Yosemite上使用ext4,这是一种长而安全的方式
有一个类似的问题,并且不愿意重新格式化USB记忆棒,我只使用了一个归档器。 或多或少所有现代GUI(例如File Roller,7Zip等)或CLI都允许拆分存档文件。 将分割限制设置在FAT边界以下(有点4GB),对于速度你可以选择低压缩率,甚至“存储”,即根本不压缩,瞧!
如果您可以访问Windows计算机,则无需格式化即可转换USB-stick文件系统。 您应该按如下方式使用Windows命令行:按Win + R
,键入cmd
– > OK
,在打开的窗口中输入命令convert X: /FS:ntfs
其中X:
是已安装的USB记忆棒的字母。 不到一分钟就准备好了。 请享用。
重新格式化或使用拆分是很好的选择,或者您可以尝试使用zip来压缩文件,只需知道某些文件已经被压缩,因此压缩它们会使它们变大。 (您也可能丢失文件所有权,时间戳等)