unix - subdirectorios - mover todos los archivos de un directorio a otro en linux
¿Puedo enlazar varios directorios en uno? (2)
Tengo la sensación de que ya sé la respuesta a esta, pero pensé que la verificaría.
Tengo varias carpetas diferentes:
images_a/
images_b/
images_c/
¿Puedo crear algún tipo de enlace simbólico para que este nuevo directorio tenga el contenido de todos esos directorios? ¿Es este nuevo " images_all
" contendría todos los archivos en images_a
, images_b
e images_c
?
¡Podrías probar con un sistema de archivos de unión como unionfs!
No. Tendría que vincular simbólicamente todos los archivos individuales.
Lo que podrías hacer es crear un trabajo para ejecutar periódicamente que básicamente eliminó todos los enlaces simbólicos existentes en images_all
, luego volver a crear los enlaces para todos los archivos de los otros tres directorios, pero es un poco complicado, algo así como esto :
rm -f images_all/*
for i in images_[abc]/* ; do; ln -s $i images_all/$(basename $i) ; done
Tenga en cuenta que, mientras se ejecuta este trabajo, otros procesos pueden parecer 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.
Volviendo a esta pregunta después de un tiempo, también se me ocurre que puede minimizar el tiempo durante el cual los archivos no están disponibles.
Si los vincula a un directorio diferente , realice operaciones mv
relativamente rápidas que minimizarían el tiempo. Algo 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 lo he probado, por lo que cualquiera que lo implemente deberá confirmar la idoneidad o no.