Sugerencia de flujo de trabajo cómo mantener archivos en dos lugares a la vez

Recientemente, quise hacer una copia de seguridad de mis archivos de proyecto UDK 3 en mi Dropbox, pero UDK requiere que los archivos de proyecto estén en el mismo directorio que la instalación (4GB) en sí misma, ¡y 4GB es demasiado grande para mi Dropbox! En este artículo, aprenderá cómo puede resolver este problema haciendo que los archivos parezcan estar en dos lugares a la vez, usando enlaces duros, enlaces simbólicos, y uniones.

Vista previa del icono de imagen por P. J. Onori.


El concepto basico

Cuando desfragmenta la unidad de disco duro y la información se mueve, ninguno de sus archivos guardados deja de funcionar solo porque la información se almacena en un lugar diferente. Esto se debe a que su sistema operativo tiene una capa de abstracción que administra todo esto; Básicamente, lo que haces clic para abrir una imagen o un ejecutable es solo un enlazar al archivo o datos deseados.

Ampliando esto, puede deducir que podría tener más de un enlace a la mismo ít; foo.exe y bar.exe podría abrir exactamente el mismo programa!

Vamos a ponerte un poco más técnico ...

Propina: Esta es en realidad una característica de los sistemas de archivos compatibles con POSIX, como NTFS. Dicho esto, esto NO funcionará en FAT, FAT32, exFAT y ReFS.

Enlaces duros

Enlaces duros son similares a los accesos directos de archivos; le permiten tener acceso al mismo archivo en diferentes ubicaciones. La principal diferencia es que esto se implementa en el propio sistema de archivos, por lo tanto, cuando creas un enlace duro a un archivo, solo estás creando un nuevo archivo. nombre para ello, y será exactamente el mismo archivo, con ambos nombres que apuntan a la misma ubicación exacta en el disco duro.

Si realiza algún cambio en el archivo a través de alguna de los "nombres" (es decir, si abre el archivo original o uno de los enlaces duros y lo modifica), los cambios se propagarán a todos los otros lugares donde existe el archivo, en relación con los atributos del archivo y el archivo. sí mismo.

Cada archivo existirá hasta que se eliminen todos sus enlaces duros; cuando eso sucede, el espacio utilizado por el archivo se declara libre. (Puede usar una herramienta de restauración de archivos para recuperar su archivo, pero no se garantiza que funcione).

Uniones (o puntos de unión)

Los enlaces duros son para archivos que uniones son directorios, particiones o volúmenes, en (y solo en) el mismo sistema. Ambos se interpretan a nivel del sistema operativo y, como resultado, son transparentes para los programas y los usuarios..

Enlaces simbólicos

A diferencia de lo anterior, enlaces simbólicos Se pueden usar tanto para archivos como para carpetas, por lo tanto, en esencia y de percepción, son realmente similares a los accesos directos.

La diferencia es que un enlace simbólico apunta a la ruta del archivo original, en lugar de a la ubicación del archivo en su disco duro. Esto significa que si cambia el contenido del archivo, un enlace simbólico seguirá apuntando a él (y reflejará los cambios), pero si cambia el nombre del archivo original, el enlace simbólico ya no lo apuntará.


Aplicaciones prácticas

He usado esto para resolver algunos problemas prácticos.

UDK 3 Gestión de proyectos pesadilla

Cualquiera que haya trabajado con UDK 3 sabe que, aunque el motor es excelente, el flujo de trabajo de administración de proyectos es engorroso, por ejemplo, no es trivial tratar con múltiples proyectos en la misma instalación, por lo que los desarrolladores generalmente tienen múltiples instalaciones para múltiples proyectos. Se pone peor si empiezas a pensar en hacer una copia de seguridad de tu proyecto, como mencioné anteriormente..

Para mis proyectos privados, siempre uso dos soluciones de copia de seguridad: control de origen y copia de seguridad en la nube, con BitBucket y Dropbox respectivamente. La configuración del control de código fuente de su código en UDK es trivial, pero, ¿qué sucede si desea hacer una copia de seguridad de su proyecto personalizado con una solución de copia de seguridad en la nube como Dropbox que requiere que todos los archivos estén en una carpeta específica del sistema??

Aquí está mi solución:

  • En la carpeta de copia de seguridad en la nube, vuelva a crear la estructura de carpetas para sus archivos de proyecto personalizados, de modo que sea posible simplemente copiar y pegar en otra instalación de UDK. (Esta es una ventaja adicional y ayuda si desea llevar su proyecto en un lápiz USB a un dispositivo fuera de línea).
  • Confirme que los archivos de su proyecto (incluidos los archivos de configuración UDK que configuran su proyecto personalizado) se colocan correctamente.
  • Cree uniones de la carpeta del proyecto personalizado para la instalación de UDK, y enlaces duros para los archivos aislados fuera de esas carpetas.

Propina: No puedes usar enlaces simbólicos; UDK detectará eso y lanzará un error..

Una biblioteca de música bien organizada

Siempre he tenido problemas con la forma en que organizé la carpeta de mi biblioteca de música; ya que nunca fui un fanático del uso de aplicaciones como iTunes, y quería que mi disco duro estuviera limpio y organizado. Después de pasar años probando diferentes enfoques, el que más me gustó fue tener una carpeta por artista y, dentro, los singles de artistas respectivos y varias carpetas por álbum..

Eso es bueno, hasta que empiezas a encontrarte con singles de un artista con otros veinte. ¿Qué vas a hacer al respecto, copiar el mismo archivo en la carpeta de cada artista? No usar enlaces duros!

  • Como siempre hay un artista que se apropia de la canción, colóquela en la carpeta de ese artista..
  • Crea enlaces duros de la misma canción a la carpeta de cada artista destacado..

Las manos en!

Aquí es cómo configurar estos enlaces en los tres sistemas operativos principales.

Windows

En Windows, puede hacerlo utilizando el indicador de línea de comandos sin instalar nada, o mediante la GUI de Explorer después de la instalación de una pequeña herramienta llamada Link Shell Extension.

Si usa la línea de comandos, abra un indicador de línea de comandos elevado (es decir, uno con privilegios administrativos), ingrese mklink, y presione Entrar. Verá la información de ayuda que explica cómo crear enlaces duros, uniones y enlaces simbólicos de directorio. Por ejemplo, puede crear un vínculo físico entre dos archivos de texto llamando mklink / H c: \ file1.txt c: \ file2.txt.

Para hacer esto a través de Explorer, primero descargue e instale Link Shell Extension. (Esta es mi solución preferida, ya que tiene una funcionalidad extendida y útil como puntos de volumen e iconos de superposición). El flujo de trabajo es realmente sencillo; Puede verlo en acción y aprender a usarlo en la página web de la utilidad..

Linux

En mi búsqueda no encontré una solución GUI total para Linux; Si conoces alguno, por favor déjalo en los comentarios..

Si usa la Terminal, puede usar la en comando para crear enlaces duros y enlaces simbólicos. Por ejemplo, prueba ln fooOriginal barLink. Wikibooks tiene una guía simple para ln, o puede leer la especificación completa.

Existe una solución de GUI parcial: en Ubuntu (y posiblemente en otras variantes de Linux), puede crear enlaces simbólicos arrastrando un archivo con el botón central del mouse y seleccionando Enlace aquí.

Desafortunadamente, no he encontrado ninguna aplicación GUI que permita la creación de enlaces duros.

Mac OS X

OS X es un caso especial, ya que se sabe que los enlaces duros de directorios crean todo tipo de problemas. Además, hay otra noción, similar a las otras pero más avanzada: una alias.

Los alias son similares a los enlaces simbólicos, pero se implementan en un nivel más alto y una estructura más robusta. Se pueden vincular a archivos y carpetas en cualquier lugar, incluidos los almacenamientos en red, utilizando una ID única. Una de las mejores características de los alias es que controlan los cambios de ubicación de los archivos; es decir, no se rompen cuando el archivo original se mueve a otro lugar. Desafortunadamente, algunas aplicaciones pueden tener un problema con seguirlas al objetivo.

Por otro lado, los enlaces simbólicos (o enlaces simbólicos) son archivos de sistema de bajo nivel que contienen la ruta del objetivo; se rompen cuando mueves el archivo original, pero cualquier aplicación que lo use llegará al lugar deseado. Los enlaces simbólicos son geniales para usar con carpetas predefinidas de sistema o aplicación, o cuando desea mover sus documentos de usuario o caché de correo electrónico a otra unidad.

Propina: Los usuarios de Mac OS aconsejan que se pegue con alias y enlaces simbólicos siempre que sea posible.

En la Terminal, puede utilizar el en comando al igual que en Linux.

En la GUI, puede usar el menú contextual para crear un alias haciendo clic con el botón derecho del ratón en un archivo o carpeta. Alternativamente, puede crear enlaces simbólicos con la aplicación SymbolicLinker.

Una tercera opción es escribir su propio código o compilar el código de este repositorio de GitHub


Otros casos de uso

Me estoy alejando cada vez más del desarrollo de juegos aquí, pero creo que es importante mostrar la variedad de problemas que puedes resolver con este concepto, para que estés bien preparado para usarlo cuando sea el momento adecuado en tu flujo de trabajo de gamedev!

Mover archivos de configuración o directorios clave

La mayoría de las aplicaciones no son flexibles con respecto a la ruta de configuración del usuario, por lo que puede usar enlaces para superar este problema en caso de que desee hacer una copia de seguridad de la información o mantenerla separada y organizada en otro lugar.

En Linux, también puede usar enlaces simbólicos para hacer una copia de seguridad de su carpeta de inicio en una unidad diferente:

  • Copia tu carpeta de inicio a una unidad o partición diferente,
  • Formatea la partición de tu sistema con una instalación nueva.
  • Cree un enlace simbólico a la nueva carpeta de inicio del sistema. (Si sabe bash, puede crear un script que lo haga por usted, ¡lo que facilita tener nuevas instalaciones de nuevas versiones!)

En Windows, especialmente si tiene un SSD bastante pequeño, puede usar enlaces para separar su instalación de Windows de su Usuario y Archivos de programa carpetas:

  • Instale Windows en su SSD.
  • Mueve el Archivos de programa y Usuarios carpetas a una unidad separada y cree uniones para las rutas de las carpetas originales.
  • Si obtiene un error de actualización de Windows 80070011, es posible que desee consultar este artículo sobre cómo solucionarlo.
  • O, si arranca con Linux y Windows, puede usar enlaces para mantener los mismos archivos personales en ambos sistemas operativos. Esto es particularmente útil en situaciones en las que necesita acceso a Correo electrónico o Dropbox en ambos sistemas operativos, pero, por supuesto, no desea que sus archivos se dupliquen en cada uno de ellos..

    Programación

    Podría crear un programa grande con múltiples funciones que dependa del nombre de la aplicación para determinar qué función ejecutará. (Es decir, la misma aplicación tiene varios enlaces duros que difieren solo en el nombre). Esto se hizo en sistemas antiguos de Unix, donde mv, cp y rm Ejecutó el mismo archivo ejecutable. Si lo piensas bien, mover un archivo en el peor de los casos puede ser una cp y rm Operación y, con este método, podría compartir la mayoría del código y mantener los requisitos de almacenamiento de los ensamblajes al mínimo.

    Mientras estaba investigando esto, lo probé en C # y Windows 8.1; En mi investigación, descubrí que existen muchas formas de obtener el nombre de archivo de un programa, pero solo algunos de esos métodos pueden recuperar el nombre de archivo de un enlace físico..

    La imagen de arriba muestra un programa de prueba que hice para demostrar este problema. Como puede ver, el nombre de archivo de la primera ventana es OriginalFileName.exe y el del segundo es HardlinkedFileName.exe. El código mostrado es el código necesario para los resultados mostrados, respectivamente. Puede obtener el código para esta aplicación en este repositorio de GitHub.

    Finalmente, como desarrollador web, es posible que se encuentre con el mismo tipo de problemas que describí para el desarrollo de UDK 3, especialmente si está utilizando LAMP, WAMP o similar. Puede codificar una secuencia de comandos para crear enlaces duros y enlaces simbólicos a los archivos de su sitio, de modo que los archivos puedan estar en cualquier lugar en sus dispositivos de almacenamiento, pero no tiene que cambiar nada para probar el sitio.


    Conclusión

    No espere usar esto a diario, pero espere sentirse bendecido cuando tenga un problema que se resuelva fácilmente con esto. Es una de esas cosas para tener en mente porque algún día será útil saber.