DwarFS - 跨平台、快速、高压缩比文件镜像系统:非常适合压缩打包海量小文件

原始链接在: DwarFS - 跨平台、快速、高压缩比文件镜像系统:非常适合压缩打包海量小文件 - 小众软件

DwarFS 是一个适用于 Linux、Windows 和 macOS 系统的快速、高压缩比只读文件系统,它可以打包任何文件与数据,最终得到一个可以跨平台读取的压缩镜像文件,并且访问速度很快,占用的 CPU 资源也很少。非常适合压缩打包海量小文件。@Appinn


DwarFS 是什么

DwarFS 是一款专注于去除重复数据,实现高压缩比的只读文件系统。你可以用它保存那些不再需要修改的只读数据,比如:

  • 原始记录数据
  • 影片、照片等原始素材
  • 天文延时摄影
  • 备份数据
  • 软件分发(系统镜像等)
  • 任何不再需要修改的文件

它也非常适合保存海量的小文件。

关于压缩率,青小蛙测试了一下:

原始大小 DwarFS 大小
.mkv 视频文件 24.9GB 24.1GB
软件安装包 110MB 102MB
系统镜像 4.59GB 4.46GB
29603个文件,3679个文件夹 5.09GB 1.74GB

最后一个数据出来还是很震惊的,这是发现频道的一款软件(【开发者自荐】VIVY – Stable Diffusion 桌面应用),使用 DwarFS 压缩:

然而并没有完,当你通过 DwarFS 把这个压缩后的镜像挂载到系统之后,它是可以正常运行里面的程序的。

当然并未继续测试只读盘对于程序使用的影响。不过 DwarFS 提供了办法使用 overlayfs 设置 DwarFS 的示例,以便在只读 DwarFS 映像之上创建可写文件系统挂载。这些就留给开发者折腾吧。

DwarFS 具体用法

DwarFS 原生支持 macOS、Linux,并在 WinFsp 的支持下,可以在 Windows 下使用。

创建镜像

mkdwarfs.exe -i c:\tv -o c:\tv.dwarfs

其中,-i 后面是源文件,-o 后面是创建的镜像文件。macOS 与 Linux 相同。

之后,你就会得到一个 tv.dwarfs 镜像文件,这个文件可以随意带走,也可以挂载到系统上。

挂载镜像

不同系统方式不同:

Windows 系统挂载 dwarfs 镜像

dwarfs.exe c:\tv.dwarfs Z:

将 tv.dwarfs 挂载到系统 Z 盘。

macOS & Linux 挂载 dwarfs 镜像

dwarfs ./tv.dwarfs /mnt

将当前目录下的 tv.dwarfs 挂载到 /mnt

挂载速度很快,用起来就与普通文件一样了。

卸载镜像

Windows 下,终止命令行就可以了。

macOS 与 Linux 使用常规方式:

umount /mnt

即可卸载镜像。

访问速度

根据开发者测试,通过 1 Gb/s 网络连接访问相同的一组数据,dwarfs 镜像比原始文件快了大约 2.5 倍。


获取


原文:https://www.appinn.com/dwarfs/

另外可以参考下 AI 提供的使用指南:

和 Linux 的 SquashFS 以及华为的 EROFS 相比,性能怎么样?

编辑:GitHub 里把其他只读文件系统全部拿出来吊打一遍,还真是……有实力啊。

图片

能用到 npm 的依赖上就好了,动辄成千上万的小文件真是头疼

只读,应该比较麻烦

这不是分发盗版游戏时常用的打包方式(之一)嘛

原来是这样。看起来我是很久没打游戏了啊…

这个ai是怎么搞的,GPT4, :+1::+1::+1::+1:

有种docker的感觉,但是更专注于文件系统而不是启动服务。很有意思的技术,感觉值得观察

昨天尝试用这个软件备份下文件,有点慢啊。

备份的文件有1.2TB左右,文件数量大概100万+,文件夹数量50万+,文件基本上是图片、缩略图、元信息,准备将文件打包存到机械硬盘上,结果扫描阶段就花了将近一个小时,开始传输基本上就30~50MB每秒,CPU跑满,13700k直接卡的啥都干不了。

今天按照类似的理念,创建vhdx磁盘镜像,挂载后用fastcopy复制,基本上能跑到硬盘满速,缺点就是没压缩功能了。

看DwarFS的扫描结果,我这些文件能压到93%,估计压缩的都是那些元信息文件,已经用其他软件压缩到极致的数据不太适合,如果是备份大量纯文本日志、数据库的场景,或许更合适。

重复数据多的很合适。

还有一次性备份1.2T有点大了,建议分小点,多次。

不然一个篮子坏了就很惨

vhdx可以创建NTFS分区时启用文件压缩?

这些文件是eagle的库,里面的文件都是用脚本从从pixiv下载的图片。

现在研究拆分方案,考虑放弃用eagle存全量数据,元数据存到directus里检索,缩略图存minio,文件直接存文件系统。

all in one用着挺爽,但迁移备份太难了。

你是备份还是直接用啊…备份无所谓啊。

是个好办法,可以试一下。

主要还是考虑备份,文件量一大fastcopy都能卡死,实际使用性能其实还够用,想尽办法减少文件数量,要不是考虑以后2T的固态也会不够用,都打算直接dd备份了。

那和wim以及esd就是差不多的格式,这两个gui工具还能多点

只包含 winfsp-x64.dll 还是不行的,需要安装一个驱动模块,建议直接下载安装后再使用:Release WinFsp 2023 · winfsp/winfsp · GitHub

1 个赞

我在Ubuntu23.10.1下面测试挂载镜像成功,但是在windows下挂载不成功,显示的是The service dwarfs has been started. 但是实际并没有出现盘符。我看了一下作者在winfsp上的回复,貌似这个问题一直有,不知道要用哪个命令参数去处理这个问题。

跟7z比有何優勢?我前幾日下到一個82M的7z文件,解壓之後竟然有2G。

我的理解是,DwarFS是只讀且能掛載後直接使用。7z必需解壓才能用,不過是可寫的。

你这一说我突然想起来很久以前有个软件叫 winmount,可以挂载压缩包