Будут ли удалены файлы при перемещении каталога в другую файловую систему, если в нем недостаточно места?

Учитывая /mnt/source/ и /mnt/target/, которые являются двумя различными местами / файловыми системами.

  • mv /mnt/source/dir /mnt/target/
  • Он исчерпывает пространство на полпути (и останавливается)

  1. Представляя, что /mnt/source/dir заполнен каталогами, подкаталогами и файлами, при сбое mv удаляются ли какие-либо файлы из /mnt/source/dir?

  2. Можно ли безопасно удалить мою ошибку (rm /mnt/target/dir) подготовить больше места в файловой системе /mnt/target/ и повторить операцию перемещения?

  3. Или, возможно: Если я не смогу подготовить больше места в файловой системе /mnt/target/, я должен сделать что-то вроде «отменить», как mv /mnt/target/dir/* /mnt/source/dir/ (с файловым менеджером, чтобы перезаписать целевые файлы), чтобы я мог передумать и вообще не пытаться переместить?


related: Что происходит, когда вы принудительно завершаете операцию каталога `mv` между двумя дисками?

2
задан 16 July 2019 в 07:09

1 ответ

Файлы удалены из/mnt/source/foo?

Только когда команда сообщает об успехе на перемещении.

$ $ mv --version
mv (GNU coreutils) 8.25

и

$ info mv

имеет информацию о том, что происходит:

mvможет переместить любой тип файла от одной файловой системы до другого. До версии 4.0 fileutils, mv мог переместить только регулярные файлы между файловыми системами. Например, теперь mv может переместить всю иерархию каталогов включая файлы специального устройства от одного раздела до другого. Это сначала использует часть того же кода, которым это используется cp -a для копирования требуемых каталогов и файлов затем (принимающий копию, за которой следуют), это удаляет оригиналы. Если копия перестала работать, то часть, которая была скопирована в целевой раздел, удалена. Если бы необходимо было скопировать три каталога от одного раздела до другого и копии первого каталога, за которым следуют, но второе не сделало, то первое оставили бы на целевом разделе и втором, и третье оставили бы на исходном разделе.

Следите за 2-й частью полужирным: это сделано на каждом mv Вы делаете так

mv a b c /dir/

удалит "a" промежуточный "a" и "b".

2
ответ дан 2 December 2019 в 03:27

Другие вопросы по тегам:

Похожие вопросы: