На 100% безопасно переименовывать файл во время его записи?

В Ubuntu, в отличие от Windows, я могу переименовывать файл во время его записи на жесткий диск (например, потому что это вывод программы или копия другого файла), а также я могу переименовывать каталог, содержащий файлы которые пишутся: система не отправляет сообщения типа «Файл используется, операция не разрешена». Эта операция переименования безопасна на 100%, или существует риск создания поврежденных файлов? И, в первом случае, какова техническая причина, которая делает это возможным, в отличие от других операционных систем? (может быть, что-то связано со структурой файловой системы Linux и использованием Inodes, я думаю ...?)

Большое спасибо.

6
задан 19 September 2013 в 10:17

1 ответ

Linux работает с дескрипторами файлов, а переименование или перемещение файлов в Linux не изменяет дескриптор файла. Даже удаление файла не будет проблемой: процесс, которому принадлежит дескриптор файла, все еще может читать и писать.

Страница Википедии об инодах будет лучше всего прочитана на этом сайте.

В вычислениях индекс (узел индекса) - это структура данных, обнаруженная во многих файловых системах Unix. Каждый индекс хранит всю информацию об объекте файловой системы (файл, узел устройства, сокет, канал и т. Д.). Он не хранит содержимое файла и имя файла, за исключением некоторых случаев в современных файловых системах.

Последствия

Номер инода файла остается неизменным при его перемещении в другой каталог на том же устройстве или при дефрагментации диска, что может изменить его физическое местоположение. Это также подразумевает, что полностью соответствующее поведение inode невозможно реализовать во многих файловых системах, отличных от Unix, таких как FAT и его потомки, которые не имеют способа сохранить эту неизменность, когда перемещаются как запись каталога файла, так и его данные. .


Итак: да.

0
ответ дан 19 September 2013 в 10:17

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

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