Estou pensando em uma situação em que eu teria algo que cria uma cópia de um diretório, ajusta alguns arquivos e, em seguida, processa o resultado. Isso é feito com bastante frequência, talvez algumas dezenas de vezes ao dia. (O caso de uso exato é testar envios de patches; enganar o código, corrigi-lo, criar / testar / relatório / etc.)
O que estou procurando pode ser feito criando uma nova estrutura de diretórios e preenchendo-a com links físicos do original. No entanto, isso só funciona se todas as ferramentas usadas excluir e recriar arquivos, em vez de editá-los no local.
Existe uma maneira de o sistema de arquivos copiar na gravação de um arquivo?
Nota: Estou ciente de que muitos FSs usam COW em um nível de bloco (todas as atualizações são feitas por meio de gravações em novos blocos), mas não é isso que eu quero.
cp
e ln
faz quase exatamente a mesma coisa. COW em nível de bloco é um truque para minimizar o intervalo em que os metadados do FS estão incorretos: en.wikipedia.org/wiki/ZFS#Copy-on-write_transactional_model