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

2023-11-15 04:32:18 +08:00
 dreamkuo
本人 10t 的硬盘,都满了, 究其原因,大量重复文件.不同时期的系统镜像,手机照片的非增量备份.
这些东西如果软件去重,会花费大量的时间,

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

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

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

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

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

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

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

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

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

需求不大,不会到一百行代码的。
NoOneNoBody
2023-11-15 14:10:37 +08:00
文件去重和内容去重是两码事
前者很简单,递归一遍检查 bytes(size)/hash 就够了,因为检查是只读性质,多进程跑加速,并且把 path:hash 保存起来,以后检查无需再次 hash
如果文件不是你产生创建的,例如下载,多数需要后者,这就难办了,需要一套专门的相似匹配系统
xausky
2023-11-15 20:03:47 +08:00
如果特别多重复的上 zfs 的块级去重,就是内存占用大一些
ruanimal
2023-11-15 21:31:44 +08:00
简单方法,再加个硬盘
dreamkuo
2023-11-16 04:33:07 +08:00
@ruanimal 老铁 6666

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/991961

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX