V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dreamkuo
V2EX  ›  NAS

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

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

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

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

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

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

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

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

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

    个人用户不推荐 Ceph ,自建服务器内存不充裕不推荐 ZFS
    flyqie
        12
    flyqie  
       164 天前 via Android
    你可以看下 fastdfs

    去重在不同层有不同做法。
    PbCopy111
        13
    PbCopy111  
       164 天前
    你这种情况,都删了就成了,反正也不看。
    要么没事自己翻翻照片,每天收拾一点,重温记忆。你拍照的时候,不就是为了重温么。。
    我以前也有这个顾虑,现在完全没有了,4T 的硬盘存视频和照片,还是能富裕,用了 10 年了。
    Byzliu
        14
    Byzliu  
       164 天前 via Android
    抽空整理一下吧
    fuis
        15
    fuis  
       164 天前
    块级别去重
    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  
       164 天前
    写个代码,循环处理,计算哈希,哈希重复的标记删除,或者是挪到同一个的某个路径,人工审核一遍,再删除。

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