Какие дополнительные проверки можно провести для копии файла на сервере
Что проверяют
Умеете ли вы думать дальше очевидного «файл появился в папке». Интервьюер ждёт, что вы проверите содержимое, метаданные, права и поведение в неудачных сценариях. Следом часто просят рассказать, как бы вы это автоматизировали.
Как отвечать
Разложите проверки по слоям:
- целостность: сравнение контрольных сумм исходника и копии,
sha256sumв Linux илиGet-FileHashв PowerShell. MD5 годится для поиска случайной порчи, но от намеренной подмены не защищает; - размер и полнота: совпадение размера в байтах, для больших файлов проверка, что копия не оборвалась на середине;
- метаданные: имя, расширение, регистр, кириллица и пробелы в имени, дата изменения, владелец и права доступа (
ls -l,stat). Копия с правами777или недоступная сервису это дефект; - открываемость: файл реально читается целевым приложением, картинка открывается, архив распаковывается, CSV парсится в нужной кодировке;
- конфликты: что происходит, если файл с таким именем уже есть: перезапись, переименование или ошибка;
- негативные сценарии: нет места на диске, нет прав на запись, обрыв сети посреди копирования, файл нулевого размера, очень большой файл, две копии одновременно;
- атомарность: потребитель не должен увидеть недописанный файл. Частый приём: запись во временное имя и переименование по завершении;
- логи и уведомления: запись об операции в журнале, корректный код возврата, понятное пользователю сообщение об ошибке.
Автоматизацию можно показать на примере: тест на Python с hashlib и pathlib, который запускается в CI после выкладки и сравнивает хэши, размеры и права.
Где спотыкаются
Ограничиваются проверкой, что файл существует. Пустой файл с правильным именем такую проверку проходит.
Забывают про права и владельца. Копия на месте, но сервис, который должен её читать, получает «Permission denied».
Не проверяют негативные сценарии и повторный запуск. Самые неприятные баги копирования живут в обрыве связи, нехватке места и перезаписи.