Estoy pensando en una situación en la que tendría algo que crea una copia de un directorio, modifica algunos archivos y luego procesa el resultado. Esto se hará con bastante frecuencia, tal vez unas pocas docenas de veces al día. (El caso de uso exacto es probar los envíos de parches; duplicar el código, parchearlo, construir / probar / informar / etc.)
Lo que estoy buscando podría hacerse creando una nueva estructura de directorio y rellenándola con enlaces duros desde el original. Sin embargo, esto solo funciona si todas las herramientas que usa eliminan y recrean archivos en lugar de editarlos en su lugar.
¿Hay alguna manera de hacer que el sistema de archivos copie y escriba para un archivo?
Nota: Soy consciente de que muchos FS utilizan COW a nivel de bloque (todas las actualizaciones se realizan mediante escrituras en nuevos bloques), pero esto no es lo que quiero.
cp
y ln
hacer casi exactamente lo mismo. Block-level COW es un truco para minimizar el intervalo en el que los metadatos de FS son incorrectos: en.wikipedia.org/wiki/ZFS#Copy-on-write_transactional_model