У меня есть сервер, на котором размещен интранет-сайт, где одной из функций будет возможность загружать файлы. Файлы будут сохраняться в папке с ограниченным доступом и управляться через веб-бэк-энд. Чтобы избежать конфликтов имен, я планирую назначать UUID и сохранять исходное имя файла вместе с UUID в базе данных для будущего извлечения.
Однако у меня есть два опасения:
- Возможность дублирования файлов (на уровне байтов, а не только по имени) и
- Обеспечение целостности файлов.
Я думал, что если я запущу какой-нибудь тип хеша/контрольной суммы (MD5, SHA256 и т. д.), это может решить обе проблемы. Я мог бы сохранить хеш и сравнить файл в будущем и проверить, не был ли он поврежден, и если бы я нашел другой файл с таким же хешем, я бы знал, является ли файл настоящим дубликатом.
Итак, мои вопросы:
- Являются ли мои опасения по поводу повреждения файлов необоснованными?
- И еще, является ли это хорошей стратегией для выявления дубликатов файлов?
решение1
1) повреждение файлов встречается нечасто, и базовая система должна предотвращать и предупреждать о таких вещах, но да, неплохо перепроверить. А еще лучше иметь резервную копию вне сайтаhttp://en.wikipedia.org/wiki/Сравнение_программ_резервного_копирования
2) если вы в любом случае используете хеши, то нет необходимости в других стратегиях, но да, есть что-то вроде обнаружения перемещения rsync, которое будет сравнивать все файлы по размеру, что хорошо и быстро, затем любой файл одинакового размера будет хеширован, если еще не был, и проверен на уникальность. В зависимости от содержимого файла есть другие варианты, такие как git для текста или quality trumping для медиа.