Un sistema de archivos con control de versiones es cualquier sistema de archivos informático que permite que un archivo informático exista en varias versiones al mismo tiempo. Por lo tanto, es una forma de control de revisiones . La mayoría de los sistemas de archivos con control de versiones más comunes mantienen una serie de copias antiguas del archivo. Algunos limitan la cantidad de cambios por minuto o por hora para evitar almacenar una gran cantidad de cambios triviales. Otros, en cambio, toman instantáneas periódicas a cuyo contenido se puede acceder utilizando métodos similares a los del acceso normal a los archivos.
Tecnologías similares
Respaldo
Un sistema de archivos con versiones es similar a una copia de seguridad periódica , con varias diferencias clave.
- Las copias de seguridad normalmente se activan en un período de tiempo determinado, mientras que el control de versiones se produce cuando el archivo cambia.
- Las copias de seguridad suelen ser de todo el sistema o de toda la partición, mientras que el control de versiones se realiza de forma independiente archivo por archivo.
- Las copias de seguridad normalmente se escriben en medios separados, mientras que los sistemas de archivos con versiones escriben en el mismo disco duro (y normalmente en la misma carpeta, directorio o partición local).
En comparación con los sistemas de control de revisiones
Los sistemas de archivos con control de versiones ofrecen algunas de las características de los sistemas de control de versiones . Sin embargo, a diferencia de la mayoría de los sistemas de control de versiones, son transparentes para los usuarios y no requieren un paso de "confirmación" independiente para registrar una nueva revisión.
Sistema de archivos con registro en diario
Los sistemas de archivos con control de versiones no deben confundirse con los sistemas de archivos con registro en diario . Mientras que los sistemas de archivos con registro en diario funcionan manteniendo un registro de los cambios realizados en un archivo antes de confirmar dichos cambios en ese sistema de archivos (y sobrescribiendo la versión anterior), un sistema de archivos con control de versiones mantiene copias anteriores de un archivo al guardar cambios nuevos. Las dos funciones tienen propósitos diferentes y no son mutuamente excluyentes.
Almacenamiento de objetos
Algunas implementaciones de almacenamiento de objetos ofrecen versiones de objetos, como Amazon S3 .
Implementaciones
ES
Una implementación temprana del control de versiones, posiblemente la primera, fue en el ITS del MIT . En el ITS, un nombre de archivo constaba de dos partes de seis caracteres; si la segunda parte era numérica (compuesta solo por dígitos), se trataba como un número de versión. Al especificar un archivo para abrirlo para lectura o escritura, se podía proporcionar una segunda parte de ">"; al leer, esto significaba abrir la versión del archivo con el número más alto; al escribir, significaba incrementar el número de versión existente más alto y crear la nueva versión para escritura.
Otra implementación temprana del control de versiones fue en TENEX , que se convirtió en TOPS-20 . [1]
Archivos-11 (RSX-11 y OpenVMS)
Un ejemplo poderoso de un sistema de control de versiones de archivos está integrado en el sistema operativo RSX-11 y OpenVMS de Digital Equipment Corporation . En esencia, siempre que una aplicación abre un archivo para escribir, el sistema de archivos crea automáticamente una nueva instancia del archivo, con un número de versión adjunto al nombre. Los números de versión comienzan en 1 y cuentan hacia arriba a medida que se crean nuevas instancias de un archivo. Cuando una aplicación abre un archivo para leer, puede especificar el nombre exacto del archivo incluido el número de versión, o solo el nombre del archivo sin el número de versión, en cuyo caso se abre la instancia más reciente del archivo. El comando DCL/CCL "purge" se puede utilizar en cualquier momento para administrar el número de versiones en un directorio específico. De manera predeterminada, se eliminarán todas las versiones excepto las de número más alto de todos los archivos en el directorio actual; este comportamiento se puede anular con el modificador /keep=n y/o especificando rutas de directorio y/o patrones de nombre de archivo. Los sistemas VMS a menudo están programados para purgar los directorios de usuario en un cronograma regular; A veces los usuarios finales lo malinterpretan como una propiedad del sistema de versiones.
Linux
- NILFS : un sistema de archivos estructurado en registros que admite el control de versiones de todo el sistema de archivos y la creación de instantáneas continuas. En esta lista, este es el único que es estable y está incluido en el núcleo principal.
- Tux3 – El cambio más reciente fue en 2014. [2]
- Next3 – La actualización más reciente fue en 2012.
- ext3cow – El lanzamiento más reciente fue en 2005.
El 8 de febrero de 2004, Kiran-Kumar Muniswamy-Reddy, Charles P. Wright, Andrew Himmer y Erez Zadok (todos de la Universidad Stony Brook ) propusieron un sistema de archivos apilable Versionfs, que proporciona una capa de control de versiones sobre cualquier otro sistema de archivos de Linux. [3]
LMFS
El sistema de archivos de la máquina Lisp admite el control de versiones. Esto fue posible gracias a las implementaciones de MIT, LMI, Symbolics y Texas Instruments. Uno de estos sistemas operativos fue Symbolics Genera .
macOS
A partir de Lion (10.7), macOS tiene una función llamada Versiones que permite guardar y explorar versiones anteriores de documentos de forma similar a Time Machine para aplicaciones creadas para usar Versiones. Sin embargo, esta funcionalidad se lleva a cabo en la capa de la aplicación, no en la capa del sistema de archivos; [4] Lion y las versiones posteriores no incorporan un verdadero sistema de archivos de control de versiones.
Servidor abierto de SCO
HTFS , adoptado como el sistema de archivos principal para SCO OpenServer en 1995, admite el control de versiones de archivos. El control de versiones se habilita en cada directorio configurando el bit setuid del directorio, que se hereda cuando se crean subdirectorios. Si el control de versiones está habilitado, se crea una nueva versión de archivo cuando se elimina un archivo o directorio, o cuando se abre un archivo existente con truncamiento. Las versiones no actuales permanecen en el espacio de nombres del sistema de archivos, bajo el nombre del archivo original pero con un sufijo adjunto que consiste en un punto y coma y un número de secuencia de versión. Todas las versiones excepto la actual se ocultan de las lecturas de directorios (a menos que se configure la variable de entorno SHOWVERSIONS), pero las versiones son accesibles para todas las operaciones normales. La variable de entorno y la accesibilidad general permiten que las versiones se administren con las utilidades habituales del sistema de archivos, aunque también hay un comando "undelete" que se puede usar para purgar y restaurar archivos, habilitar y deshabilitar el control de versiones en directorios, etc.
Otros
- Subversion tiene una característica llamada "autoversionado" donde una fuente WebDAV con un backend de subversion se puede montar como un sistema de archivos en sistemas que admiten este tipo de montaje (Linux, Windows y otros lo hacen) y guardar en ese sistema de archivos genera nuevas revisiones en el sistema de control de revisiones. [5]
- El software comercial de gestión de configuración y control de revisiones Clearcase también ha admitido "MVFS" (sistema de archivos de múltiples versiones) en HP-UX, AIX y Windows desde principios de la década de 1990.
Software relacionado
Los siguientes no son sistemas de archivos con versiones, pero permiten una funcionalidad similar.
- APFS [6] y ZFS admiten instantáneas y clones.
- Btrfs admite instantáneas. [7]
- HAMMER en DragonFlyBSD tiene la capacidad de almacenar revisiones en el sistema de archivos.
- NILFS , que admite la creación de instantáneas .
- El sistema de archivos Fossil de Plan 9 puede proporcionar una función similar, tomando instantáneas periódicas (a menudo cada hora) y poniéndolas a disposición en /n/snap . Fossil puede archivar una instantánea para siempre en Venti (normalmente una instantánea cada día) y ponerlas a disposición en /n/dump . Si se realizan varios cambios en un archivo durante el intervalo entre instantáneas, solo se registrará la más reciente en la siguiente instantánea.
- Diseño de archivos para escribir en cualquier lugar : las soluciones de almacenamiento de NetApp implementan un sistema de archivos llamado WAFL, que utiliza tecnología de instantáneas para mantener diferentes versiones de todos los archivos en un volumen.
- pdumpfs, creado por Satoru Takabayashi, es un sistema de copia de seguridad diaria simple similar al /n/dump de Plan 9, implementado en Ruby . Funciona como una herramienta de captura de instantáneas, que permite copiar un directorio completo a otra ubicación mediante enlaces físicos. Si se usa con regularidad, puede producir un efecto similar al control de versiones. [8]
- Microsoft Windows
- Shadow Copy es una característica introducida por Microsoft con Windows Server 2003. Shadow Copy permite realizar copias de seguridad manuales o automáticas o instantáneas de un archivo o carpeta en un volumen específico en un momento específico.
- RollBack Rx: permite tomar instantáneas de particiones de disco. Cada instantánea contiene solo las diferencias entre instantáneas anteriores y solo toma unos segundos crearla. Se puede usar de manera confiable para mantener estable un sistema operativo Windows y/o protegerlo contra malware.
- GoBack (descontinuado): el software GoBack para Windows de Symantec permite revertir archivos, directorios o discos a estados anteriores. Puede registrar un máximo de 8 GB de cambios y deja de registrar cada cambio temporalmente en caso de una alta actividad de E/S .
- Versomatic: el software Versomatic de Acertant rastrea automáticamente los cambios de archivos y archiva preventivamente una copia de un archivo antes de que se modifique.
- El sistema de archivos en cascada expone un repositorio de Subversion o Perforce a través de un controlador de sistema de archivos. El usuario debe decidir explícitamente cuándo confirmar los cambios.
- Los documentos de implementación de Git llaman a Git un "sistema de archivos direccionable por contenido con una interfaz de usuario VCS escrita encima de él". [9] También existe una implementación de FUSE de terceros que puede extender Git como un sistema de archivos montable, con control de versiones de lectura y escritura. [10]
Véase también
- Respaldo
- Comparación de software de control de versiones
- Copiar en escritura
- Almacenamiento de objetos
Referencias
- ^ Daniel G. Bobrow, Jerry D. Burchfiel, Daniel L. Murphy, Raymond S. Tomlinson, TENEX, Un sistema de tiempo compartido paginado para el PDP-10 ( Comunicaciones de la ACM , vol. 15, págs. 135-143, marzo de 1972)
- ^ linux-tux3 en GitHub .
- ^ Kiran-Kumar Muniswamy-Reddy; Charles P. Wright; Andrew Himmer; Erez Zadok (8 de febrero de 2004). Un sistema de archivos de versiones versátil y orientado al usuario. Tercera conferencia USENIX sobre tecnologías de archivos y almacenamiento (FAST 2004).
- ^ "Versiones de archivos de Mac OS X Lion, parte 2". 6 de agosto de 2011. Consultado el 28 de abril de 2012 .
- ^ Control de versiones con Subversion: control de versiones de código abierto de próxima generación
- ^ "Acerca del sistema de archivos de Apple". Documentación para desarrolladores de Apple . Consultado el 9 de junio de 2021 .
- ^ http://www.oracle.com/technetwork/articles/servers-storage-admin/advanced-btrfs-1734952.html Instantáneas, clones y dispositivos semilla" subpunto "instantáneas".
- ^ Página de inicio de pDumpFS
- ^ "Fundamentos internos de Git".
Git es fundamentalmente un sistema de archivos direccionable por contenido con una interfaz de usuario VCS escrita encima.
- ^ "¿Qué es Gitfs?". Presslabs . 24 de julio de 2015 . Consultado el 7 de marzo de 2022 .
Enlaces externos
- "Cómo crear un sistema de almacenamiento de archivos". WikiHow . Consultado el 31 de julio de 2018 .