GNU cp :В чем разница между `--link `и `--reflink=always `?

Есть туториал как добавить glibc без перезаписи системной из проекта. Он используется для тестирования сборок. Более сложной частью было бы указать установленному компилятору использовать скомпилированную версию lib вместо системной.

https://sourceware.org/glibc/wiki/Testing/Builds

0
16.06.2021, 11:57
1 ответ

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

--reflink=alwaysзапрашивает оптимизированную копию, если это возможно. Это может принимать различные формы; наиболее известным является копирование -на -запись, но его также можно реализовать как серверное -копирование в сетевых файловых системах. После завершения копирования может случиться так, что на диске существует единственная копия блоков данных, но есть два файла, и каждая запись каталога указывает на другой файл. Изменения, сделанные через одну запись каталога, не будут видны через другую; каждый файл живет отдельной жизнью (, за исключением побочных -эффектов общих блоков данных, например. повреждение диска повлияет на оба файла ).

Иными словами, --linkявно запрашивает создание новых записей каталога, указывающих на один и тот же файл, с общими последующими изменениями. --reflink=alwaysзапрашивает создание новых файлов с потенциальной оптимизацией и изолированными последующими изменениями.

В качестве альтернативы mv--linkболее подходит, чем --reflink=always— это приведет к меньшей работе операционной системы.

3
28.07.2021, 11:24

Теги

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