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.
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 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).
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..
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á.
He usado esto para resolver algunos problemas prácticos.
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:
Propina: No puedes usar enlaces simbólicos; UDK detectará eso y lanzará un error..
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!
Aquí es cómo configurar estos enlaces en los tres sistemas operativos principales.
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..
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.
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
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!
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:
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:
Archivos de programa
y Usuarios
carpetas a una unidad separada y cree uniones para las rutas de las carpetas originales.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..
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.
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.