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