Какие проверки провести, чтобы файлы не перезаписывались при повторном копировании на флешку
Что проверяют
Умеете ли вы превратить бытовую задачу в набор проверок и начать с требований: что вообще значит «не перезаписывались». Интервьюеру интересно, вспомните ли вы про особенности файловых систем флешек. Следом обычно спрашивают, как убедиться, что файл на флешке остался тем же самым.
Как отвечать
Сначала уточните, что тестируем: собственную программу копирования или резервирования либо штатное копирование ОС. И какое поведение ожидается при совпадении имени: спросить пользователя, пропустить, сохранить обе копии с суффиксом. Проводник и Finder по умолчанию спрашивают, что делать.
Дальше проверки:
- совпадение имени: повторное копирование того же файла, файла с тем же именем, но другим содержимым, и папки, где конфликтует часть файлов, с опцией «применить ко всем»;
- регистр: FAT32 и exFAT не различают регистр, поэтому
Report.txtиreport.txtна флешке один файл, хотя на ext4 это два разных; - сравнение по времени: если программа решает по дате изменения, помните, что FAT32 хранит её с точностью до 2 секунд, и неизменённый файл может выглядеть «новее»;
- целостность: пропущенный оригинал на флешке не меняется, это проверяется хешем до и после (
Get-FileHashв PowerShell,sha256sumв Linux); - сбои: извлечение флешки посреди копирования, нехватка места, защита от записи. Надёжная реализация пишет во временный файл и переименовывает его в конце, тогда старая версия не превращается в обрезок;
- ограничения ФС: файл больше 4 ГБ на FAT32 не поместится, запрещённые в имени символы вроде
:и?, длинные пути.
Где спотыкаются
Сразу перечисляют проверки, не выяснив ожидаемое поведение. Для одних «не перезаписывать» значит спросить, для других молча пропустить.
Сравнивают файлы только по имени и размеру. Разные файлы одного размера встречаются постоянно, надёжен только хеш содержимого.
Забывают про регистр и файловую систему флешки. Тест на локальной папке с ext4 проходит, а на реальной флешке с FAT32 файлы затирают друг друга.