问题描述
我正在尝试将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
:-
安装包
udftools
sudo apt-get install udftools
-
使用
gparted
或gnome-disks
创建分区表和一个分区 -
用危险的
dd
擦除目标分区的第一个mibibyte(double-check命令行!)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 memory 棒,请调整它。之后,您的USB memory 棒可用于GNU /Linux和其他免费操作系统的读写,当然还有当前版本的Windows(read-only和过时的XP版本)和MacOS。
-
-
-
exFAT是另一种选择。它与FAT32和UDF相比是新的,并声称效果很好
-
原生与Windows
-
与MacOS
-
用Linux
-
更多关于exFAT的信息
我已经开始在Ubuntu中测试exFAT了。当我有更多使用它的经验时,我打算编辑这个答案。让我们从以下链接开始,
-
en.wikipedia.org/wiki/ExFAT ExFAT是Microsoft针对嵌入式系统优化的专有文件系统,因为它重量轻,更适合具有低内存和低功耗要求的解决方案,并且可以在固件中实现。
这个命令行在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来压缩文件,只要知道某些文件已经被压缩,因此压缩它们会使它们变大。 (您也可能丢失文件所有权,时间戳等)