如何将稀疏文件从 ext4 文件系统复制到 exfat 文件系统并保持表观大小?

如何将稀疏文件从 ext4 文件系统复制到 exfat 文件系统并保持表观大小?

我的问题是,我正在尝试将文件从使用 ext4 文件系统的 Ubuntu Linux 系统复制到使用 exFat 系统的 Sandisk 1TB USB 卡。

在ext4系统中,整个目录结构占用~2.5Gb。当我将其复制到 USB 驱动器上的 exFat 系统时,它膨胀到约 290Gb。

我正在复制的文件是图像文件 (.jpg)。据我所知,问题在于原始文件是稀疏文件。默认情况下,ext4 系统会压缩它们,并且表观大小要小得多(每个文件约 10k)。然而,正如我在 MSDN 网站上发现的那样,exFat 系统是非压缩的,并以非稀疏方式存储稀疏文件。 (我尝试多次复制以强制它们符合..通过“cp”或“tar gzip”等等...没有运气。在 Linux-->SanDisk (exFat) 或 MacOS--> 中也是如此闪迪)。

下面的示例是 SanDisk exFat 结构上“du -all -h”的最后 5 行:

du -all -h
.
.
1.0M    ./img_00000026.jpg
1.0M    ./img_00000089.jpg
1.0M    ./img_00000032.jpg
1.0M    ./img_00000081.jpg
1.0M    ./img_00000086.jpg
1.0M    ./img_00000049.jpg
1.0M    ./img_00000037.jpg
101M    .

当我使用“表观尺寸”参数时:

du -all --apparent-size -h
.
.
7.3K    ./img_00000026.jpg
7.8K    ./img_00000089.jpg
5.0K    ./img_00000032.jpg
7.5K    ./img_00000081.jpg
9.1K    ./img_00000086.jpg
8.8K    ./img_00000049.jpg
6.6K    ./img_00000037.jpg
1.9M    .

当我在 Linux 端(ext4 系统)上执行相同操作时,两个列表是相同的......它总是显示表观大小。

我的问题:是否有办法强制 exFat 系统使用表观大小(或以压缩方式写入,但非稀疏),这样它就不会占用我所有的房间?

我正在寻找一种解决方案,无需将 SanDisk USB 重新格式化为另一个文件系统。

相关内容