Копирование файлов с использованием опций --reflink и --copy-on-write в Linux работает следующим образом:
- Создаётся «теневая копия» данных. 1 То есть делается дополнительная ссылка на те же данные, на которые ссылается iNode существующего файла. 1
- Оба файла хранят своё содержимое в одном месте. 1 Но как только в оригинальный файл будут записаны новые данные, он изменится, а теневая копия сохранит оригинальное содержимое. 1 Фактически, такое копирование — это просто создание новой записи в каталоге файлов, копирования данных не происходит. 1
- Если в файловой системе назначения не поддерживается копирование при записи (copy-on-write), параметр when определяет, что произойдёт. 2 Если when — always (по умолчанию), копирование завершится ошибкой. 2 Если auto, копирование продолжится в стандартном режиме. 2
Этот механизм работает в файловых системах, которые поддерживают Copy-on-Write (reflink), в основном BTRFS. 5