
Git almacena contenido de forma única en su repositorio según el hash calculado de cualquier archivo. Si mi directorio tiene dos copias del mismo archivo en algún lugar dentro de él, git solo lo almacenará una vez.
Me pregunto si este mismo concepto se ha implementado a nivel del sistema operativo como algún tipo de sistema de archivos.
Si un sistema de archivos actuara de esta manera de forma predeterminada, sería de gran ayuda condll infiernoasuntos. Esencialmente, establecería un enlace simbólico automáticamente en su nombre. Cualquier aplicación podría empaquetarse (como un jar) en un directorio con todas sus dependencias y sin costo de almacenamiento adicional.
Los entusiastas de Ruby comparten bibliotecas publicándolas como rubygems. Aún así, este esfuerzo por compartir gemas resultó en pesadillas de implementación que llevaron a laVendedor de todoconcepto de copiar todas las dependencias en carpetas locales para evitar tales pesadillas.
Respuesta1
Lo que estás buscando se llama "deduplicación". Si bien generalmente lo implementan proveedores de productos de almacenamiento especializados,el sistema de archivos ZFStambién lo implementa.La mayoría de los sistemas operativos derivados de Unixpuede hacer uso de ZFS y, por lo tanto, lo recomendaría como el primer lugar donde buscar.
Respuesta2
Network Appliance, Inc. ha tenido una capacidad de almacenamiento como esta durante muchos años; de hecho, presentaron quejas ante Sun Microsystems por su sistema de archivos ZFS y hace lo que Aaron Miller menciona en su respuesta aceptada. Por si sirve de algo, las quejas se resolvieron con Oracle después de aproximadamente 3 años.
He utilizado esto como solución corporativa desde el año 2000 y funciona bien. El costo de almacenamiento después de la primera 'copia' surge una vez que hay un cambio en el archivo. De lo contrario, con muchas 'copias' solo se produce un ligero aumento del espacio de nombres.
No creo que esto responda la pregunta sobre el "nivel del sistema operativo", sino más bien sobre el "nivel del sistema de archivos".
Respuesta3
El nuevo sistema de archivos de Apple (APFS, llamado así porque ya existía un AFS que era otra cosa) hace esta magia de "enlace automático"/"deduplicación". macOS 10.13 lo admite de forma nativa (en la mayoría de las Mac), al igual que iOS 11.
Dicho esto, no creo que eso sea suficiente para convertirlo en "git like", ya que si fuera "git like", entonces también tendría una suma de verificación criptográfica del estado de mi estructura de directorios en momentos determinados en el tiempo, de modo que Podía estar seguro de que nadie había pirateado mi computadora ni modificado los directorios de mi sistema. De hecho, uso repositorios de git para rastrear ciertos directorios críticos del sistema en mis Mac, como archivos de configuración de Apache, LaunchDaemons, LaunchAgents y algunos otros; de esa manera, cuando instalo software o ejecuto mi servidor por un tiempo, puedo ver si algo ha cambiado. se ha jodido.
APFS también tiene un soporte ingenioso para descargar cosas del sistema de archivos a la nube cuando no se han utilizado por un tiempo, pero todavía parece que están allí y se completarán desde la nube a pedido.
Siempre puedes construir un Hackintosh y jugar con él. BSD es divertido.