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
yln
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_modelRespuestas:
Si tiene la opción de plataforma para su servidor de archivos, iría con una compilación de OpenSolaris reciente y usaría la función de deduplicación de ZFS. De esta forma, las copias de los archivos no ocuparían espacio adicional, e incluso los segmentos comunes entre archivos no se replicarían.
Puede leer todo sobre la deduplicación de ZFS en esta publicación en el blog de Jeff Bonwick .
fuente
La mayoría de las soluciones de virtualización de Linux ofrecen COW a nivel de archivo entre los SO virtualizados (copiados del WP):
fuente
¿Puede ser SVN u otra herramienta de versiones (git, cvs)?
fuente