¿Hay alguna manera de crear una copia de copia en escritura de un directorio?

14

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.

BCS
fuente
No parece mantenido, pero quizás boklm.eu/copyfs
Zoredache
Entonces, ¿desea hacer una copia en escritura a través del sistema de archivos, pero no quiere un sistema de archivos que use copia en escritura? Estoy confundido.
Kamil Kisiel
1
@ Kamil Kisiel: Quiero VACA a nivel de archivo no VACA a nivel de bloque. Los resultados de COW a nivel de archivo cpy lnhacer 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
BCS
¿En qué tipo de sistema se espera usar esto?
John Gardeniers
Es lo suficientemente especulativo que, a menos que conozca una manera de hacerlo para alguna configuración (en ese caso, simplemente publíquelo) no quisiera que la gente pierda tiempo descubriendo cómo hacerlo (a menos que lo hagan por diversión :)
BCS

Respuestas:

7

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 .

Kamil Kisiel
fuente
1
ZFS es asombroso; cambiará su forma de pensar sobre el almacenamiento
tegbains
Genial, a menos que haya un inconveniente para tenerlo encendido durante todo el viaje.
BCS
Agregué un enlace a una publicación de blog que tiene más detalles técnicos. Puedes ver si es lo que necesitas allí.
Kamil Kisiel
Nueva url para publicación de Jeff Bonwick: blogs.oracle.com/bonwick/zfs-deduplication-v2
Mathieu
0

La mayoría de las soluciones de virtualización de Linux ofrecen COW a nivel de archivo entre los SO virtualizados (copiados del WP):

  • SI:
    • Docker, Linux-VServer, lmctfy, LXC, Singularity, Virtuozzo, Sandboxie, systemd-nspawn, Solaris Containers (ZFS), FreeBSD jail (ZFS), OpenVZ
  • NO:
    • chroot, sysjail, WPAR, cuentas virtuales iCore, Turbo
ankostis
fuente
Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia
Romeo Ninov
-2

¿Puede ser SVN u otra herramienta de versiones (git, cvs)?

Dmitry Trukhanov
fuente
Eso es aún peor porque crea dos copias de cada archivo y las absorbe a través de un socket.
BCS