Я написал скрипт, который проверяет, существует ли папка, и если да, то очищает ее. затем он ждет 5 секунд, а затем переписывает новые (или, возможно, те же самые) файлы обратно в папку.

Когда папки еще не существуют, копирование файлов займет 15-20 секунд. но когда папки уже существуют, я могу наблюдать, как они опустошаются, я вижу, что они ждут, а затем я вижу, как они копируют команды копирования менее чем за 1 секунду. И файлы отображаются в списке.

Может кто-то объяснить это мне? Может показаться, что копия на самом деле ищет, существует ли файл HAD, и если да, то если он каким-то образом идентичен, он просто восстанавливает файл, а не копирует его заново.

Я не проверял теорию "восстановления", но хотел знать, возможно ли это (в любом случае это страшно).

Я добавил 5-секундную паузу, думая, что, возможно, драйву нужно время для стабилизации.

Заранее спасибо.

Пример скрипта:

@ эхо выключено

if exist c:\some\folder erase /q c:\some\folder
erase /q C:\another\folder\file*.exe
ping -n 6 -w 1000 127.0.0.1 > nul

copy /y some\folder\sample.exe c:\some\folder\sample.exe
copy /y another\folder\file001.exe c:\some\folder\file001.exe

Сделайте ваши тестовые файлы большими, чтобы они копировались, и вы поймете, о чем я.

1 ответ1

2

Похоже, вы наблюдаете, как кеш файловой системы выполняет свою работу.

Прежде всего, когда вы копируете файл, компьютер должен прочитать этот файл в память, прежде чем он сможет записать его обратно в копию. Чтение этого файла представляет собой временные затраты, поэтому копия в памяти хранится в кэше на случай, если она понадобится вам снова. Например, если вы открываете тот файл, который только что скопировали, или копируете его в другое место. ОС не нужно тратить время на чтение с диска снова.

Во-вторых, торт - это ложь. Когда файл "записывается", он фактически не попадает на диск. Вместо этого он отправляется в буфер памяти, который затем фиксируется на диске в более позднее время (обычно сразу, но не обязательно - это зависит от того, насколько занят диск). В любом случае, ОС сообщает, что файл завершил копирование, хотя на самом деле это не так.

Как кэширование чтения, так и буферизация записи являются методами оптимизации, которые используются во всех современных операционных системах. В вашем случае (при условии, что ничего не пошло не так и файлы идентичны), ваш сценарий находится в хорошем месте. Файл (ы) просто скопировали из одного блока кеш-памяти в другой блок буферной памяти, и поэтому это не заняло много времени.

Между прочим ... именно поэтому вы никогда не должны выключать компьютер, не выключив его должным образом, или не извлекая флэш-диск, не отключая его. Частью этого процесса является фиксация кэша записи на диск.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .