Что произойдет, если вы удалите файл во время его перемещения из одной файловой системы (ext4) в другую (NTFS)?

276
Arslan Axton

это беспокоило меня со вчерашнего дня. Я использовал файлы GNOME (Nautilus) для перемещения видеофайла из папки «Загрузки» на диск NTFS. Теперь, когда я вырезал и вставил файл, он сразу же появился в месте назначения (отдельная файловая система NTFS, использующая ntfs-3g на том же жестком диске). Я знаю, что когда вы перемещаете файлы из одной файловой системы в другую, она по существу копирует, а затем удаляет файл (исправьте меня, если я ошибаюсь), но я «спешу + удаляю» файл в спешке из источника, и через несколько мгновений обнаружил, что файловый менеджер был все еще перемещая файл в файловую систему NTFS, даже после того, как я удалил файл из источника, и он исчез. После того, как подвижная планка достигла 100%, это дало мне ошибку . Но я проверил целевой пункт назначения, и файл все еще был перемещен в пункт назначения, и он воспроизводился нормально.

Итак, что на самом деле здесь произошло? Работают ли файловые операции в Linux впоследствии, чтобы не прерывать операцию перемещения? Или файл, который был перемещен в мой целевой пункт назначения, будет поврежден? или была ошибка из-за последней операции копирования во время перемещения файла, потому что операция перемещения все равно удалила бы файл?

0

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

2
Daniel B

В Linux вы можете удалять открытые файлы в большинстве случаев. Это заставит файл исчезнуть из списков каталогов. Однако пространство, занимаемое файлом, будет освобождено только после того, как файл больше не используется.

В вашем случае неудачей был только последний шаг операции перемещения: удаление исходного файла / каталога.

1
grawity

Удаление файла не очищает его данные (содержимое) - он только удаляет метаданные, говорящие о том, что файл находится там, и помечает соответствующее дисковое пространство как «свободное для последующего использования».

Но что еще более важно, ОС будет хранить эти метаданные столько времени, сколько потребуется. Даже после того, как вы отсоедините файл от его каталога (или от всех каталогов, если у него было несколько жестких ссылок), ОС не удалит фактический файл, если хотя бы один процесс сохраняет его открытым. Таким образом, файл все еще там - только безымянный (но все еще занимающий свое место) во время остальной части операции копирования.

Я так сказать, «операции копирования», потому что компьютеры не могут физически перемещать данные между дисками - первый файл копируется в пункт назначения, то исходный файл будет удален. Именно поэтому вы получили сообщение об ошибке: ваш файловый менеджер использует две отдельные операции (копирование и удаление); копирование выполнено успешно, но удаление не удалось (потому что вы уже удалили его).

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