Является ли перемещение файла атомарным, если задействовано более 1 каталога? - PullRequest
1 голос
/ 01 февраля 2012

В NTFS перемещение файлов является атомарным, как объяснено здесь :

[...] если вы работаете в NTFS, то файловые операции являются атомарными на уровне файловой системы,Переименование будет происходить в одной операции, если речь идет о любом более высоком коде.

Означает ли это, что перемещение файла является атомарным, даже если оно перемещено из одного каталога в другой?Или только в одном каталоге?

Я предполагаю, что оба каталога находятся на одном и том же томе.

1 Ответ

1 голос
/ 15 ноября 2012

Да, они атомные. Каталоги источника и назначения заблокированы на время перемещения, что не позволяет программам видеть данные в полете.

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

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

...