我有一台服务器托管一个内部网站,该网站的一个功能是上传文件。文件将保存在受限访问文件夹中,并通过 Web 后端进行管理。为了避免名称冲突,我计划分配 UUID,并将原始文件名与 UUID 一起存储在数据库中,以供将来检索。
然而,我确实有两个担忧:
- 存在重复文件的可能性(在实际字节级别,而不仅仅是名称),以及
- 确保文件完整性。
我认为如果我运行某种类型的哈希/校验和(MD5、SHA256 等),就可以解决这两个问题。我可以存储哈希值并在将来的某个日期比较文件并验证它是否被损坏,如果我发现另一个具有相同哈希值的文件,我就会知道该文件是否是真正的重复文件。
我的问题是:
- 我对文件损坏的担心是没有根据的吗?
- 此外,这是一个识别重复文件的好策略吗?
答案1
1) 文件损坏并不常见,底层系统应该能够预防和警告此类事件,但最好还是再检查一下。最好在异地备份http://en.wikipedia.org/wiki/Comparison_of_backup_software
2) 如果您使用哈希,则无需其他策略,但是确实有类似 rsync 移动检测的想法,它会按大小比较所有文件,这很好而且很快,然后如果尚未哈希,则将对任何相同大小的文件进行哈希处理并检查其唯一性。根据文件内容,还有其他选项,例如文本的 git 或媒体的质量胜过。