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

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

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

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

решение1

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

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

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

решение2

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

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

Связанный контент