V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
CodeAllen
V2EX  ›  程序员

高压缩率的归档工具求推荐

  •  
  •   CodeAllen · 1 天前 · 2450 次点击

    首先说下自己情况,归档文件数据一般用 7z 格式,比 zip 压缩率能稍微高一些,主要还是开源免费,图片和视频这些肯定不能指望有多高的压缩率,图片和视频我一般用“仅存储”模式速度快。 大家的资料是如何压缩归档的?用啥格式和压缩参数,另外,听说 7z 格式没有恢复记录,如果发生文件损坏很难恢复,增加一定的恢复记录提高数据恢复能力性价比如何,大家怎么看?

    36 条回复    2024-12-26 03:30:43 +08:00
    v2tudnew
        1
    v2tudnew  
       1 天前   ❤️ 1
    我也想知道哪个工具压缩率高,好像游戏高压版这类工具压缩率就可以。
    7z 是没有恢复记录的,你可以用独立的 PAR2 软件生成恢复记录。
    不推荐 RAR 恢复记录,恢复效果很玄幻。

    如果你是两块硬盘互相备份,恢复记录有 1%都够用了,毕竟两个副本同时损坏一个分块的概率不比彩票头等奖大。
    GeekGao
        2
    GeekGao  
       1 天前
    RAR 是最佳的。如果不考虑 license 的话。
    forty
        3
    forty  
       1 天前   ❤️ 1
    7z 的支持普及度远不及 zip, 我觉得不差那么一点点存储了, zip 被大量的工具直接支持,包括但不限于操作系统, 各种在线文件管理系统,文件比较工具等,方便在不下载不解压的情况下查看文件列表或内容
    2067
        4
    2067  
       1 天前
    7z-std ,速度飞起,谁用谁知道

    图片视频压不压差不多,如果觉着太零散了就打个包

    ---

    或者弄个 vhdx 文件,分区开启 ntfs 压缩


    ---

    照片视频要是想压缩的话,工具挺多的,图片可以用 irfanview ,可以指定目标大小,视频可以用 ffmpeg_batch ,存档的东西建议 cpu 压缩,av1 或者 hevc 看心情,gpu 压缩画质会比较差
    2067
        5
    2067  
       1 天前
    真正重要的东西,本地 raid1 ,然后再弄几个网盘加密后上传,就别在意容量的问题了

    至于压缩比这个事,其实 7z 的 lzma 已经可以满足要求了,至于担心文件损坏,可以考虑一下 MultiPar ,虽然这种东西的恢复能力也都仅限于少量误码
    MoYi123
        6
    MoYi123  
       1 天前   ❤️ 1
    可以参考下这个 https://tech.meituan.com/2021/01/07/pack-gzip-zstd-lz4.html

    一般就用 zstd 吧.
    dejavv
        7
    dejavv  
       1 天前
    具体看压缩的东西,peazip 也可以
    prodcd
        8
    prodcd  
       1 天前
    归档类的还是考虑 rar ,可以设置部分格式直接跳过压缩,所以很方便。恢复记录还没尝试过,打包以后扔网盘很划算,记得加密码。license 有办法。
    据说 7z 压缩包如果损坏所有文件都无法解压?
    重要数据还是异地多存储几份更靠谱,不要迷信 RAID ,那玩意不防火,也不防病毒。
    电影类的公共资源完全没必要存储,随看随下,看完就删。
    CodeAllen
        9
    CodeAllen  
    OP
       1 天前
    @v2tudnew par2 学习了,看起来有点东西。对的,以前 GTA 有那种超级压缩包,解压也贼慢,但是压缩率好像挺高。

    @GeekGao 国内的代理好像不咋地,如果花钱了效果好其实也可以接受

    @forty zip 有个问题,不支持连文件名一起加密,而且老版本 Windows 资源管理器不支持 AES 模式的 zip 加密包,刚试了一下,7z 用 AES 模式压缩加密 zip 包在 win11 24h2 上可以正确打开,老版本打开会报错。有时候可能就是需要避免被扫描所以需要加密文件名。

    @2067 分区开压缩占用性能吧,就跟开了 BitLocker 一样,感觉肉眼可见的性能损失。简单用 7z 确实也够用了,图片视频二压感觉没必要,像是复印机给复印件再复印一次,越压越没法看。
    2067
        10
    2067  
       1 天前   ❤️ 1
    @prodcd #8

    部分损坏导致后面无法解压是因为固实压缩导致的,winrar 默认不开启这个所以不受影响,7zip 默认固实范围 4G ,也就是说单个位置损坏最多可能造成 4G 数据无法恢复。

    固实压缩的好处就是可以消除文件之间的相同冗余,坏处就是一损俱损
    RecursiveG
        11
    RecursiveG  
       1 天前   ❤️ 1
    主存储 7z+RAIDz2 ,网盘等要单独加恢复记录的用 RAR ,PAR2 考虑过但是多个文件太丑了所以放弃。LZMA 算压缩率比较高的算法了,换别的也提高不了多少。
    v2tudnew
        12
    v2tudnew  
       1 天前
    @2067 #5 “少量误码”这个评价我觉得有失公允,你拉到 100%别说损坏个几十%,文件丢了也能完整恢复,当然正常情况也就是位衰减几个比特,不需要太多。
    v2tudnew
        13
    v2tudnew  
       1 天前   ❤️ 1
    @RecursiveG 已经支持内嵌 7z 压缩文件,不过我觉得这种和 RAR 恢复一样,恢复后压缩包就失去恢复能力又要折腾,不喜欢。
    CodeAllen
        14
    CodeAllen  
    OP
       1 天前
    @MoYi123 专业,我看跟 docker 镜像类似,直接上数据对比了,看起来应该是项目源码数据

    @dejavv 这个看起来有点小众,类似于压缩包查看器?好像还有一个自定义压缩包格式

    @prodcd rar 好久没用过了,后面我看看现在有没有啥变化,很早前还用好压来自,后面搞一堆广告就越看越山寨

    @v2tudnew 感觉有点套娃了,以用户的角度考虑如果 7z 格式能直接支持恢复记录肯定是最好的
    2067
        15
    2067  
       1 天前   ❤️ 1
    @v2tudnew #1 UHARC 吗,这东西真的是慢到怀疑人生,回忆起十几年前被解压比下载还慢得多的日子

    https://windows-cdn.softpedia.com/screenshots/uharc-cmd_1.png
    v2tudnew
        16
    v2tudnew  
       1 天前
    @CodeAllen 之前有人建议 7z 开发者支持,对方的大概意思是 7z 得保持高压缩比,加了恢复记录体积变大了,反正也不影响第三方搞。😅
    v2tudnew
        17
    v2tudnew  
       1 天前
    @2067 谢谢,不清楚是不是,我试试这个。
    v2tudnew
        18
    v2tudnew  
       1 天前
    @2067
    速度慢是它只用单线程,但遗憾得是,它压缩后的体积和 LZMA2 差不多:
    UHA 1,328,559,204 字节 7z 1,324,688,260 字节
    可能是比 LZMA 的 7z 压缩率高,所以当时是世界第一吧。

    像我说的游戏高压版,那是相当离谱,我举个例子:
    原文件:26.7GB 7z:23.1GB 高压版:8.3GB ,没错 8.3GB😅
    fms
        19
    fms  
       1 天前
    之前有俩差异特别小的文件,每个两百兆,想着两个一起随随便便不压到 210 兆以内?结果 7z, zip 等都是 400+。好像是当文件重复数据间隔超出窗口大小就没辙了。

    后来用了 zpaq https://www.mattmahoney.net/dc/zpaq.html 压缩+块级去重+增量存档,但应该是不支持你说的'恢复记录'

    更正式(重)一点的用过 restic, 但'归档数据'是 repo(文件夹), 不是单个文件。可以直接挂载快照到本地,后端还支持很多远程协议,日用于自动快照备份到 google drive 。
    wtof
        20
    wtof  
       1 天前
    我印象中小时候那些盗版光盘里面的高压版游戏都是混了好几种压缩,而且一层套一层,装的时候命令行窗口都有好几个
    UHARC 只是一方面,另外音频印象中也有 ogg 之类的格式转出来 WAV 之类的操作(可能素材也有类似的专门处理?)...
    LZ 这种需求不一定适合了,不排除有些可能是单独定制的
    kokutou
        21
    kokutou  
       1 天前 via Android
    游戏高压是先不压缩打包,然后工具扫描整个文件流,解压任何能解压的算法,生成一个巨大的中间文件,然后整体压缩。。。

    现在为啥少见了,因为网速快了。。硬盘大了。。。装 360 的多了,小白安装都安装不了。。。
    WhatTheBridgeSay
        22
    WhatTheBridgeSay  
       1 天前
    搞不懂媒体文件为什么还要费劲 IO 一遍,直接扔那不行吗
    chinni
        23
    chinni  
       1 天前
    dwarfs + par2
    2067
        24
    2067  
       1 天前 via Android
    @fms

    如果不开固实压缩的话每个文件都是单独处理不会复用,

    但是我印象中 7zip 从一开始就是默认打开固实开关的。

    胡乱推测一下,也许当文件本身比较大熵又很高的情况下,文件前部的少量差异就会导致后面构造字典完全不同,

    但是这种情况跟基于块的去重又可能也不完全能处理好,比如块大小是 4k 但是文件 2 比文件 1 中间少了 1k 导致所有块都错开了,需要有更好的特征识别方式

    单纯抛问题,没得思路,欢迎解答指正
    MrKrabs
        25
    MrKrabs  
       1 天前
    rar 仅存储+恢复记录一把梭
    zzzsy
        26
    zzzsy  
       1 天前
    lrzip paq+LZMA + par2
    jim9606
        27
    jim9606  
       1 天前
    一般不搞压缩的,占主要的图片、视频、文档( XML office )都是自带无损压缩,剩下的东西都不怎么占空间不值得折腾。
    7z 好像只能固实压缩,所以一旦损坏影响范围较大,也不方便部分解压。
    我更在意方便检索查阅,所以考虑用能直接挂载为文件系统的形式,linux 可以考虑 squashfs ,支持多种压缩方法。windows 考虑 NTFS/ReFS (文件系统压缩,但聊胜于无) in vhdx 。顺带一提 Windows 下可以直接用 NanaZip 打开 squashfs

    至于图片视频的二压。。我觉得没意义,都是有损压缩,自有孤本要接受数据损失,下载的直接下你认为码率合适的版本就是用不着二压。
    bao3
        28
    bao3  
       1 天前
    实际上视频图像以及一些固实的二进制文件,没有压缩的必要。
要选的话就用 LZMA 。而楼上 27# 的 squashfs 确实是一个兼顾搜索的好想法,但对于压缩来说,可能还不够好。
    shinecurve
        29
    shinecurve  
       1 天前
    zstd
    dayeye2006199
        30
    dayeye2006199  
       1 天前
    tar + zstd
    lns103
        31
    lns103  
       21 小时 10 分钟前 via Android   ❤️ 3
    我想稍微偏个题,图片也可以无损压缩,转码为 JPEG XL 格式,jpg 大约可以压缩 20%,png 大约可以压缩 40%,并且可以还原,不会有任何画质损失
    Rehtt
        32
    Rehtt  
       20 小时 53 分钟前 via Android
    想要高压缩比用 xz
    cheneydog
        33
    cheneydog  
       20 小时 29 分钟前
    Kopia
    hrdom
        34
    hrdom  
       16 小时 40 分钟前
    多张图片的压缩软件至今也没有很好的,不过理论上是可以的
    prodcd
        35
    prodcd  
       14 小时 41 分钟前
    @2067 原来是固实导致的。我一般都是把固实压缩改成默认选中,平时网络条件都还不错,还从来没碰到过 rar 文件损坏的情况。

    @CodeAllen 还是要看具体文件类型,如果你使用群晖,基本没有打包的需求。
    jqtmviyu
        36
    jqtmviyu  
       2 小时 15 分钟前
    tar caf xxx.tar.zst xxx

    之前一直用的 zip, 试过 tz xz 之类的, 太慢了. zstd, 又快压缩率又高.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   999 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 21:46 · PVG 05:46 · LAX 13:46 · JFK 16:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.