你有没有算过,自己到底存了多少媒体文件?我上周末扫描了一下硬盘,光是相机RAW和视频原始素材就占了4.2TB,另外还有两套手机备份大概1.8TB。这些文件从2017年开始积累,中间没删过。最早放在移动硬盘里,后来担心盘坏,入手群晖DS920+四盘位NAS,组了RAID1。再后来为了远程看照片,开了百度网盘会员。直到上个月,我打开腾讯云控制台查账单,发现每个月光存储和流量费就花掉六十多块钱,才重新审视这些媒体资源到底该放哪。
先说说踩过的坑。移动硬盘看起来便宜,1TB大概三百块,但磁头和盘片的故障率是玄学,我有块西数My Passport正常使用中咔哒咔哒响,恢复报价2000元。NAS不是不好,但RAID不是备份,只能防单盘故障,而且群晖的磁盘阵列重建时间特别长,4TB重建要跑十几个小时。云盘最大的问题是上传下载都要装客户端,而且“审查”逻辑很迷,我一段舞蹈视频被和谐,理由至今没搞清。最后决定试试对象存储,选了腾讯云COS标准存储,价格0.118元/GB/月。很多人觉得云存储更贵,但你算过电费没?NAS功耗约40W,一年电费175元,加上硬盘折旧和维护时间,成本并不低。
我的最终方案是“分级+CDN”。原片和不再编辑的历史素材放对象存储的低频存储,单价降到0.08元/GB/月,配合生命周期规则,180天后自动转归档存储(0.033元/GB/月)。但我不是全量放,老素材里还需要调用的部分留在NAS机械盘,只有超过一年没动过的才上传。NAS上用rclone挂载COS桶做单向同步,不删本地,防止误操作。图片博客的话,我把缩略图和H.265视频版本放在COS根目录,开启CDN,源站设置私有读,CDN回源鉴权。边缘缓存设成force-cache,文件名带SHA1哈希,这样访问少的时候CDN流量费几乎为零。为了防盗链,还开了referer防盗链,并限制单IP每文件访问次数。
这里我想说一个反直觉的观点:媒体资源的“安全”不是第一位的,“可访问性”才是。你拍到的素材如果几十年后打不开,那存得再久也没意义。所以别迷信“冷备”,也别迷信“云容灾”。真实场景是:你访问频率最高的照片要能在手机上一个点击就立即显示,而不是先经过NAS的索引再走内网穿透。对象存储+CDN就是为此而生。我最后把NAS里的照片索引用SQLite导出一个清单,记录拍摄地点、时间戳、文件大小、SHA256,以及存放的bucket路径。这个清单本身放在Vercel上的一个静态页面里,需要密码才能看。你看,媒体资源管理其实是在管理“访问路径”和“生命周期”,不是买一堆硬盘堆在家里。