Eu estava lendo o rmlint
manual e um dos manipuladores duplicados é clone e reflink:
· clonar: somente btrfs. Tente clonar ambos os arquivos com o ioctl(3p) BTRFS_IOC_FILE_EXTENT_SAME. Isso excluirá fisicamente as extensões duplicadas. Precisa de pelo menos o kernel 4.2.
· reflink: Tente fazer o reflink do arquivo duplicado ao original. Veja também --reflink em man 1 cp. Falha se o sistema de arquivos não for compatível.
O que exatamente esse clone faz e como ele é diferente de um reflink? O que o ioctl BTRFS_IOC_FILE_EXTENT_SAME faz?
As diferenças são um tanto sutis.
Reflink exclui o arquivo duplicado e cria um novo arquivo em seu lugar, que é um clone do arquivo original. Os metadados da duplicata são perdidos, embora o rmlint faça o possível para preservar os metadados por meio de alguns truques com
touch -mr
.Clone usa o ioctl BTRFS_IOC_FILE_EXTENT_SAME (ou, na versão mais recente, o ioctl FIDEDUPERANGE) que pede ao kernel para verificar se os arquivos são idênticos, em caso afirmativo, faça-os compartilhar as mesmas extensões de dados. Eles mantêm seus metadados originais. É indiscutivelmente mais seguro do que o reflink porque é feito atomicamente pelo kernel e porque verifica se os arquivos ainda são idênticos.