Вопрос или проблема
Дата обновляется при копировании файла со старой датой на USB-накопитель, но дата сохраняется при копировании файла на тот же диск
Итак, вы видите, что в каталоге C:\zet два файла.
Один с датой 1970 года, это файл (IMG_1970…jpg). (Почему дата такая старая, я не знаю, потому что файл на самом деле был создан в 2016 году, но тем не менее. Обратите внимание, что год в имени файла совпадает с меткой даты).
Другой файл — это видео 2022 года, которое, как мы увидим, копируется нормально на USB-накопитель.
C:\>dir c:\zet
Объем на диске C не имеет метки.
Серийный номер тома 4645-5DCE
Каталог c:\zet
2024-12-14 23:51 <DIR> .
2024-12-14 23:51 <DIR> ..
1970-01-02 06:16 2,222,947 IMG_19700102_061650.jpg
2022-06-15 06:15 3,769,884 VID_20220615_071520306.mp4
2 Файл(ов) 5,992,831 байт
2 Каталог(ов) 818,724,679,680 байт свободно
Вот каталог H:\zet на моем USB-накопителе. Как видите, он в данный момент пуст. Готов к демонстрации проблемы.
C:\>dir h:\zet
Объем на диске H имеет название Expansion
Серийный номер тома 0085-95C7
Каталог h:\zet
2024-12-14 23:50 <DIR> .
2024-12-14 23:50 <DIR> ..
0 Файл(ов) 0 байт
2 Каталог(ов) 3,198,971,805,696 байт свободно
Я копирую видеофайл на USB и показываю файл, и вы видите, что дата сохранилась, она была 2022 года, и этот год сохранен в метке даты.
C:\>copy c:\zet\VID_20220615_071520306.mp4 h:\zet
1 файл(ов) скопировано.
C:\>dir h:\zet
Объем на диске H имеет название Expansion
Серийный номер тома 0085-95C7
Каталог h:\zet
2024-12-14 23:50 <DIR> .
2024-12-14 23:50 <DIR> ..
2022-06-15 06:15 3,769,884 VID_20220615_071520306.mp4
1 Файл(ов) 3,769,884 байт
2 Каталог(ов) 3,198,967,873,536 байт свободно
Но посмотрите, что происходит, когда я копирую файл с меткой даты 1970 года на USB-накопитель.
C:\>copy c:\zet\IMG_19700102_061650.jpg h:\zet
1 файл(ов) скопировано.
C:\>dir h:\zet
Объем на диске H имеет название Expansion
Серийный номер тома 0085-95C7
Каталог h:\zet
2024-12-14 23:50 <DIR> .
2024-12-14 23:50 <DIR> ..
2022-06-15 06:15 3,769,884 VID_20220615_071520306.mp4
2024-12-14 23:51 2,222,947 IMG_19700102_061650.jpg
2 Файл(ов) 5,992,831 байт
2 Каталог(ов) 3,198,965,514,240 байт свободно
Смотрите, что выше, что файл при копировании на H получает обновленную метку даты на сегодняшний день, на сегодняшний год 2024. Год 1970 не был сохранен, дата просто была обновлена на текущее время!
Обратите внимание, если я копирую этот файл со старой меткой даты в другое место на C:, то на тот же диск.
Тогда метка даты сохраняется.
C:\>md zet2
C:\>copy c:\zet\IMG_19700102_061650.jpg c:\zet2
1 файл(ов) скопировано.
C:\>dir c:\zet2
Объем на диске C не имеет метки.
Серийный номер тома 4645-5DCE
Каталог c:\zet2
2024-12-14 23:53 <DIR> .
2024-12-14 23:53 <DIR> ..
1970-01-02 06:16 2,222,947 IMG_19700102_061650.jpg
1 Файл(ов) 2,222,947 байт
2 Каталог(ов) 818,721,378,304 байт свободно
C:\>cd zet
C:\zet>dir
Объем на диске C не имеет метки.
Серийный номер тома 4645-5DCE
Каталог C:\zet
2024-12-14 23:51 <DIR> .
2024-12-14 23:51 <DIR> ..
1970-01-02 06:16 2,222,947 IMG_19700102_061650.jpg
2022-06-15 06:15 3,769,884 VID_20220615_071520306.mp4
2 Файл(ов) 5,992,831 байт
2 Каталог(ов) 818,720,567,296 байт свободно
Вы копируете файл в файловую систему FAT32, которая имеет очень ограниченный диапазон и разрешение для меток времени по сравнению с NTFS.
FAT хранит каждое поле даты/времени (год, месяц, день и т.д.) отдельно и выделяет 7 бит для года, при этом 0
означает 1980 год, а 127
означает 2107 год, следовательно, 1970 год выходит за пределы возможного диапазона.
Ответ или решение
Копирование файла с устаревшим временным штампом на USB-накопитель с файловой системой FAT32 может привести к обновлению временного штампа файла. Это связано с тем, что FAT32 имеет ограничения по диапазону и разрешению временных меток, в отличие от файловой системы NTFS, где эти значения сохраняются с более высокой точностью и диапазоном.
Ограничения файловой системы FAT32
Файловая система FAT32 использует отдельные поля для хранения значений даты и времени. При этом, для года отводится всего 7 бит, что означает, что диапазон годов ограничен с 1980 по 2107. Значение 0 представляет 1980 год, а 127 — 2107 год. Таким образом, временной штамп 1970 года не может быть правильно интерпретирован и сохранён на FAT32. Когда вы копируете файл с датой 1970 года, система не может отобразить это значение и заменяет его на текущую дату и время.
Как это объясняет поведение копирования файла
Когда вы копируете файл IMG_19700102_061650.jpg
с устаревшим временным штампом на USB-накопитель, система в силу ограничений FAT32 автоматически обновляет временной штамп до текущей даты. Опыт, который вы описали, подтверждает это:
2024-12-14 23:51 IMG_19700102_061650.jpg
В этом случае, временной штамп изменяется на дату копирования, что требует от системы обновления информации о файле.
С другой стороны, когда файл с тем же временным штампом копируется на тот же носитель — диск C:\ — временной штамп сохраняется. Это возможно потому, что NTFS, используемая на локальном диске C:\, поддерживает более широкий диапазон для временных меток и может в полной мере учитывать дату создания исходного файла.
Практические выводы
-
Для архивирования данных: Если вам необходимо сохранить временные метки файлов, содержащих старые даты, следует использовать файловую систему NTFS или другие современные системы, которые не имеют таких ограничений по временным меткам.
-
При копировании данных: Проверяйте тип файловой системы на целевом устройстве. Если это FAT32 и вам нужны специфические временные метки, лучше сначала переместить файлы на диски, поддерживающие NTFS.
-
Решение проблем: Если необходимо поддерживать временные метки, убедитесь в использовании подходящего инструмента для якобы "перезаписи" или "симуляции" значений даты, если файловую систему уже нельзя изменить.
Таким образом, перед выполнением копирования важного контента, всегда проверяйте характеристики файловой системы вашего устройства. Обращение внимания на эти детали поможет избежать непредвиденных ситуаций и потерь данных.