mv: перемещение между устройствами делает перемещение каталога в каталог с тем же именем другой операцией?

12506
kagali-san

Дано:

# mv / mnt / hard / git-src / / usr / portage / distfiles /

mv: перемещение между устройствами не удалось: /mnt/hard/git-src/' to / usr / portage / distfiles / git-src '; невозможно удалить цель: каталог

А также

кд / тмп; MKDIR AB; мдкир а / кб / в;

прикоснуться к / с / 1 б / с / 1

mv a / cb / mv: не может двигаться a/c' tob / c ': файл существует

RM A / C / 1 B / C / 1

MV A / CB /

Таким образом, перемещение директории в директорию с тем же именем, когда они содержат похожие файлы, это «Файл существует». Какой смысл помечать его как «перемещение между устройствами» при использовании разных разделов?

7
Связано: [перемещать файлы с одного устройства на другое] (http://serverfault.com/q/502795/130437) в SF kenorb 8 лет назад 0

1 ответ на вопрос

8
Gilles

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

(Здесь, в той же файловой системе, это renameсистемный вызов, который возвращает ошибку. Для перемещения между файловыми системами это mkdirвызов как часть воссоздания дерева каталогов.)