V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
dreamkuo
V2EX  ›  NAS

网盘的文件唯一 是如何实现的,有家用方案么.

  •  
  •   dreamkuo · 2023-11-15 04:32:18 +08:00 · 3063 次点击
    这是一个创建于 378 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人 10t 的硬盘,都满了, 究其原因,大量重复文件.不同时期的系统镜像,手机照片的非增量备份.
    这些东西如果软件去重,会花费大量的时间,

    有没有的类似网盘重复文件保留一份的方案.

    类似资料上说的 Windows Server 2019 Btrfs Ceph ZFS 等方案.
    但是如何具体的落实到家用中呢?

    目前大容量硬盘若干. 硬盘柜两个. 移动硬盘若干. 大家有什么好的建议, 给个方案.

    这里先感谢大家了.
    21 条回复    2023-11-16 04:38:01 +08:00
    dreamkuo
        1
    dreamkuo  
    OP
       2023-11-15 04:38:40 +08:00
    我的想法是建立一个支持去重的硬盘系统, 把包含大量重复的, 例如软件备份.照片备份,系统镜像等丢进去. 这个硬盘系统就当做最终备份系统. 安全性要求并不是很高.(有了去重功能,最终备份的体积也会小很多,就算不重要也可以做双备份)

    然后重要资料,例如照片等,再单独手工整理之后拷贝出来.

    这样以后重要性不确定的东西可以先丢进去.然后隔一段时间挑重要的拷贝出来.采用硬盘备份.网络备份等方式处理.
    dreamkuo
        2
    dreamkuo  
    OP
       2023-11-15 04:42:31 +08:00
    有什么经济可靠的方案. 给推荐一下,
    听说群辉可能支持,但是一来不知道是否稳定, 二来我并不需要群辉的其他配套功能. 对我来说经济浪费.能够支持 10t 的群辉价格昂贵.
    而且我已经有两个硬盘柜了.
    dreamkuo
        3
    dreamkuo  
    OP
       2023-11-15 04:45:54 +08:00
    技术关键词叫 copy-on-write (COW)的文件系统
    ladypxy
        4
    ladypxy  
       2023-11-15 04:59:12 +08:00 via iPhone
    zfs 轻松搞定
    dreamkuo
        5
    dreamkuo  
    OP
       2023-11-15 05:02:34 +08:00
    @ladypxy 用什么方案呢, 自建 nas?
    dreamkuo
        6
    dreamkuo  
    OP
       2023-11-15 05:06:52 +08:00
    如果自建一个 nas 系统, 在有硬盘柜的情况下,用什么方案比较好呢, ? 软路由主机+硬盘柜?
    KimiArthur
        7
    KimiArthur  
       2023-11-15 06:48:13 +08:00 via Android
    copy on write 只能解决复制文件不增加空间的问题,不同来源的相同文件是解决不了的。你要的是基于一个或几个 hash 判重的系统,比如百度是依靠开头 256kb 和全文件 md5,crc32,外加文件大小来判重的。自己做的话可能一个 sha256 也够了,不过现成解决方案倒是不了解
    missuo
        8
    missuo  
       2023-11-15 06:55:46 +08:00 via iPhone
    @dreamkuo 我目前家里的服务器 Debian ,用的 ZFS
    cjpjxjx
        9
    cjpjxjx  
       2023-11-15 07:11:26 +08:00 via iPhone
    你要找的是不是 TrueNAS
    cmdOptionKana
        10
    cmdOptionKana  
       2023-11-15 07:47:34 +08:00
    可以用 Python 或 Go 之类写个快速去重的小工具,截取每个文件开头的一部分,保存 md5 到 sqlite ,这样跑一遍很快的,可以筛选出大概率重复的文件,这些文件数量不会很多,对这些可疑文件再跑一次完整的查重就行了。
    totoro625
        11
    totoro625  
       2023-11-15 08:03:50 +08:00
    自建网盘推荐:Seafile
    自带文件去重,占用资源不高,国内开发,开源版不限用户,专业版限制 3 用户
    缺点是直接用资源管理器无法直接访问文件

    备份推荐:restic
    自带文件去重,增量备份,版本控制,非常好用

    个人用户不推荐 Ceph ,自建服务器内存不充裕不推荐 ZFS
    flyqie
        12
    flyqie  
       2023-11-15 10:10:05 +08:00 via Android
    你可以看下 fastdfs

    去重在不同层有不同做法。
    PbCopy111
        13
    PbCopy111  
       2023-11-15 12:12:47 +08:00
    你这种情况,都删了就成了,反正也不看。
    要么没事自己翻翻照片,每天收拾一点,重温记忆。你拍照的时候,不就是为了重温么。。
    我以前也有这个顾虑,现在完全没有了,4T 的硬盘存视频和照片,还是能富裕,用了 10 年了。
    Byzliu
        14
    Byzliu  
       2023-11-15 13:30:21 +08:00 via Android
    抽空整理一下吧
    fuis
        15
    fuis  
       2023-11-15 13:48:09 +08:00
    块级别去重
    ZFS dedup: https://www.truenas.com/docs/references/zfsdeduplication/
    或者 btrfs + bees https://github.com/Zygo/bees

    文件级别去重
    https://github.com/markfasheh/duperemove

    对于备份场景,我现在用的是 kopia 进行备份,他是基于 CDS 做的 https://kopia.io/docs/features/#backup-files-and-directories-using-snapshots

    网盘的文件唯一是另一个原理,那个是基于 OSS 的校验和做的。但是一般的 OSS 比如 minio 本身不支持去重。
    someday3
        16
    someday3  
       2023-11-15 13:57:45 +08:00
    写个代码,循环处理,计算哈希,哈希重复的标记删除,或者是挪到同一个的某个路径,人工审核一遍,再删除。

    需求不大,不会到一百行代码的。
    NoOneNoBody
        17
    NoOneNoBody  
       2023-11-15 14:10:37 +08:00
    文件去重和内容去重是两码事
    前者很简单,递归一遍检查 bytes(size)/hash 就够了,因为检查是只读性质,多进程跑加速,并且把 path:hash 保存起来,以后检查无需再次 hash
    如果文件不是你产生创建的,例如下载,多数需要后者,这就难办了,需要一套专门的相似匹配系统
    xausky
        18
    xausky  
       2023-11-15 20:03:47 +08:00
    如果特别多重复的上 zfs 的块级去重,就是内存占用大一些
    ruanimal
        19
    ruanimal  
       2023-11-15 21:31:44 +08:00
    简单方法,再加个硬盘
    dreamkuo
        20
    dreamkuo  
    OP
       2023-11-16 04:33:07 +08:00
    @ruanimal 老铁 6666
    dreamkuo
        21
    dreamkuo  
    OP
       2023-11-16 04:38:01 +08:00
    @fuis 感谢 我研究研究
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3095 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:27 · PVG 22:27 · LAX 06:27 · JFK 09:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.