Безопасно ли копировать открытый файл, который кэшировал записи? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть файл ~ 200 Гбайт, который открыт для чтения и записи процессом (менеджер баз данных Firebird). Он может быть «заблокирован», поэтому запись в него не производится, но он все еще открыт, и я думаю, что он все еще открыт в режиме чтения / записи (но операции записи не будут выполняться).

Кроме того, Windows дисковый кеш может хранить (предварительно блокировать) записи в кеше довольно долгое время. Я могу заметить, что временная метка файла часто обновляется через 10-30 минут после операции «блокировки», что, вероятно, означает, что кэшированные записи не очищаются до тех пор.

Мой вопрос: безопасно ли копировать этот файл? в то время как все еще есть записи в Windows 'дисковом кеше, которые не были сброшены?

Это будет безопасно, если и только если операция копирования гарантирует чтение кэшированных данных, а не постоянных данных на диске , Я предполагаю, что это так, но я хотел бы, чтобы это было подтверждено.

Я буду выполнять копирование с помощью консольного приложения. NET Framework, либо с использованием File.Copy(), либо с помощью собственного чтения и запись потоков (позволяет использовать больший буфер, что потенциально повышает производительность).

Это на Windows Server 2016, через несколько месяцев будет обновлен до 2019.

...