Estoy intentando vincular archivos en una jerarquía de directorios a otro directorio. El código se ve así:
# Directories first, works fine, takes sub-second
find src_dir/sub1 src_dir/sub2 -type d -exec bash -c 'cd "$0" && mkdir -p "$@"' dest_dir {} +
# Files next, works fine, takes several seconds
find src_dir/sub1 src_dir/sub2 -type f -exec ln -f {} dest_dir/{} \;
El enlace físico es muy lento debido a las llamadas secuenciales a ln
. Sin embargo, no puedo pensar en un formulario que funcione y no puedo encontrar mucho sobre copiar como enlaces físicos en cp
páginas rsync
de manual. Inclinándose hacia escribir un programa en C para el problema específico...
Antes de saltar por esa madriguera del conejo, ¿hay alguna sugerencia sobre cómo hacerlo más rápido usando UNIX o herramientas de terceros reconocidas?
Respuesta1
ÑUcp
admite enlaces duros en lugar de copiar archivos:
cp -lR src_dir dest_dir
Si dest_dir
ya existe, esto se copiará src_dir
en dest_dir
, terminará con dest_dir/src_dir
copias de todos los directorios en src_dir
.
Si solo desea un subconjunto de src_dir
, puede copiar los subdirectorios explícitamente:
mkdir -p dest_dir/src_dir
cp -lR src_dir/sub1 dest_dir/src_dir/sub1
cp -lR src_dir/sub2 dest_dir/src_dir/sub2