softwaremonkey Ответов: 1

Как скопировать открытый файл


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

Есть ли способ скопировать файлы, которые уже открыты (для записи)?

Спасибо.

Приношу свои извинения, если это будет опубликовано дважды, что-то пошло не так при входе в систему!

Что я уже пробовал:

Я посмотрел на службу теневого копирования томов, но это, похоже, предназначено для полного резервного копирования томов, а не только для конкретных файлов.

1 Ответов

Рейтинг:
10

Jochen Arndt

В большинстве случаев файлы, открытые для записи, будут открываться с исключительным доступом, так что попытка открыть их для чтения потерпит неудачу. Если вы хотите скопировать такие файлы с помощью службы Volume Shadow, это - насколько я знаю-единственное решение.

Вы могли бы взглянуть на GitHub-candera/hobocopy: инструмент резервного копирования с открытым исходным кодом для Windows[^] и GitHub-candera/shadowspawn: утилита Windows, которая монтирует теневую копию диска на букву диска, а затем порождает произвольную команду.[^]. Оба поддерживают копирование отдельных файлов. Они больше не находятся в стадии активной разработки,но исходники могут быть полезны для реализации копирования файлов с помощью службы Volume Shadow.


softwaremonkey

Спасибо. Я проверил код, который вы предложили, и он был чрезвычайно полезен. Моя программа резервного копирования теперь работает с VSS.