Является ли python shutil.move() атомом на linux?

Мне интересно, является ли python shutil.move атомарным в linux? Является ли поведение отличным, если исходный и целевой файлы находятся на двух разных разделах или это то же самое, что и при наличии в одном разделе?

Мне больше интересно узнать, является ли shutil.move атомарным, если исходный и целевой файлы находятся в одном разделе!

Ответы

Ответ 1

Он не является атомарным, если файлы находятся на разных файловых системах. В этом случае python открывает исходный и целевой файлы, циклы считываются из источника и записываются в режим отказа и, наконец, отключают исходный файл.

Если исходный и целевой файл находятся в одной и той же файловой системе, python использует вызов rename() C, который является атомарным.