2012-07-12 6 views
6

tengo una serie de directorios en Linux y cada directorio contiene una gran cantidad de archivos y datos. Los datos en esos directorios se generan automáticamente, pero múltiples usuarios necesitarán realizar más análisis sobre esos datos y generar más archivos, cambiar la estructura, etc.Cómo crear una copia de un directorio en Linux con enlaces

Dado que estos directorios de datos son muy grandes, no quiero varios personas para hacer una copia de los datos originales, así que me gustaría hacer una copia del directorio y unirme al original del nuevo. Sin embargo, me gustaría que los cambios se guarden solo en el nuevo directorio y deje solo el original. Preferiría no vincular solo los archivos específicos que defino porque los datos en estos directorios son muy variados.

Así que me pregunto si hay una manera de crear una copia de un directorio mediante la vinculación a la original, pero manteniendo los archivos modificados sólo en el nuevo directorio.

Respuesta

21

Resulta que esto es lo que quería:

cp -al <origdir> <newdir> 

se copia un directorio completo y crear enlaces duros a los archivos originales. Si se elimina el archivo original, el archivo copiado aún existe, y viceversa. Esto funcionará perfectamente, pero descubrí que newdir no debe existir todavía. Siempre que los archivos originales sean de solo lectura, podrá crear una copia idéntica y segura del directorio original.

+1

Es posible hacer esto cuando los archivos originales no son de solo lectura, pero los cambios realizados en cualquiera de las copias se realizarán en ambas copias por igual, por lo que el enlace no es adecuado si desea poder modificar el archivo copiado sin modificar el original. – thomasrutter

2

Sin embargo, puesto que usted está buscando una manera de que la gente puede escribir de nuevo cambios, UnionFS es probablemente lo que busca. Proporciona medios para combinar ubicaciones de solo lectura y lectura y escritura en una sola.

Unionfs permite cualquier combinación de ramas de solo lectura y lectura-escritura, así como la inserción y eliminación de ramas en cualquier parte de la salida.


Originalmente iba a recomendar este (lo uso mucho):

Suponiendo que los permisos no son un problema (por ejemplo, sólo es de lectura obligatoria) Me gustaría sugerir a unirse para montaje ellos en su lugar.

mount -B <original> <new-location> 
# or 
mount --bind <original> <new-location> 

<new-location> debe existir como una carpeta.

+0

Gracias por las sugerencias! Probé el enlace de montaje y pude crear un nuevo punto de montaje. Sin embargo: 1) Tengo miles de directorios, lo que requeriría miles de montajes 2) he creado un archivo en el directorio nuevo y también se presentó en el directorio original –

+0

Miles de directorios, pero no una sola raíz a ellos que podría ser utilizado ? Necesitaría como máximo tantos montajes como usuarios en tal escenario. Incluso si diferentes usuarios tienen diferentes subcarpetas de esa única raíz común, la cantidad de montajes igual sería igual a la cantidad de usuarios. – 0xC0000022L

+0

Un árbol duplicado es posible ... pero cambiar las cosas en el nivel del sistema operativo no es ideal. Creo que puede tratar de simplemente crear de forma recursiva los enlaces a los archivos y directorios en el original, y sólo asegúrese de los archivos originales son de sólo lectura –

Cuestiones relacionadas