2009-01-08 16 views
20

Tengo la sensación de que ya sé la respuesta a esta, pero pensé que lo verificaría.¿Puedo enlazar varios directorios en uno?

que tienen un número de diferentes carpetas:

images_a/ 
images_b/ 
images_c/ 

¿Puedo crear algún tipo de enlace simbólico de tal manera que este nuevo directorio tiene el contenido de todos los directorios? ¿Es esto nuevo "images_all" contendría todos los archivos en images_a, images_b y images_c?

Respuesta

11

No. Tendría que vincular simbólicamente todos los archivos individuales.

Lo que podía hacer es crear un puesto de trabajo a ejecutar periódicamente que básicamente eliminado todos los enlaces simbólicos existentes en images_all, a continuación, volver a crear los enlaces para todos los archivos de los otros tres directorios, pero es un poco de una chapuza, algo como esto:

rm -f images_all/* 
for i in images_[abc]/* ; do; ln -s $i images_all/$(basename $i) ; done 

Tenga en cuenta que, si bien este trabajo se está ejecutando, puede parecer a otros procesos que los archivos han desaparecido temporalmente.

También deberá prestar atención al caso en que exista un único nombre de archivo en dos o más de los directorios.


Habiendo llegado de nuevo a esta pregunta después de un tiempo, se produce también a mí que se puede minimizar el tiempo durante el que los archivos no están disponibles.

Si los vincula a un directorio diferente entonces haga operaciones relativamente rápidas mv que minimizarían el tiempo. Algo así como:

mkdir images_new 
for i in images_[abc]/* ; do 
    ln -s $i images_new/$(basename $i) 
done 

# These next two commands are the minimal-time switchover. 
mv images_all images_old 
mv images_new images_all 

rm -rf images_old 

no he probado que lo que cualquier persona implementarlo tendrá que confirmar la idoneidad o de otra manera.

+4

Puede usar 'lndir' para hacer el enlaces simbólicos. –

8

¡Podría intentar con un sistema de archivos de unión como unionfs!

http://www.filesystems.org/project-unionfs.html

http://aufs.sourceforge.net/

+5

Y la frase "todavía está en etapa de desarrollo" golpea el miedo en los corazones de incluso el alma más valiente :-). – paxdiablo

+0

que se ve muy bien, pero sí, un poco aterrador. – nickf

+2

'aufs' ha sido utilizado en Ubuntu por un tiempo, por lo que es probablemente lo suficientemente estable. –

Cuestiones relacionadas