Запись каталога - это просто указатель на индекс. Индод содержит метаинформацию о файле (кроме имени) и указатели на данные файла (если они есть). Когда вы начинаете копировать файл, вы получаете дескриптор для inode.
Операционная система поддерживает количество ссылок на индекс. Пока есть ссылки на индекс, индекс и данные файла сохраняются. Как только все ссылки на индекс будут удалены, индекс будет освобожден, а пространство, необходимое для файла.
Поскольку у вас есть файл, открытый для копирования, он будет сохраняться до тех пор, пока ваш процесс не закроет файл. Это должно произойти, когда передача файла завершится, и произойдет, если процесс копирования завершится неудачно. Если передача файла не удалась на полпути, и вы удалили все жесткие ссылки на файл, вы не сможете успешно перезапустить передачу.
РЕДАКТИРОВАТЬ: Как уже отмечалось, перемещение файлов на том же устройстве выполняется без перемещения данных. Вместо этого в каталоге назначения создается новая запись каталога, а исходная запись каталога удаляется.
Возможно иметь несколько записей каталога для одного и того же файла. Это так называемые жесткие ссылки. Они создаются путем создания новой записи каталога для файла без удаления исходной записи. Inode файловой системы имеет счетчик ссылок для записи количества записей каталога, указывающих на файл.
РЕДАКТИРОВАТЬ 2: Если процесс завершится сбоем или будет убит, файл будет аккуратно удален, так как количество обращений в памяти будет уменьшено до нуля. Это действие, которое происходит, когда программа заканчивается нормально.
В случае сбоя питания или другого неработающего выключения системы, диск должен быть fsck
(проверка файловой системы), прежде чем его можно будет полностью смонтировать. В зависимости от состояния inode на диске и структур каталогов, пространство будет восстановлено, файл останется в каталоге или будет сделана новая запись в каталоге lost+found
. Результаты будут зависеть от того, какие изменения были записаны на диск или записаны в журнал файловых систем.