Generalmente uso la función de línea this one -:
function ml() { mkdir -p "$(dirname "$1")" && rsync -aP --no-links "$1" "$2" && ln -sf "$2" "$1" }
El uso es similar a mv o cp:
ml old_file target_dir/new_file_name
Desglosándolo:
mkdir -p "$(dirname "$1")"
-crea el directorio de destino si aún no existe dirname "$1"
-obtener el componente de directorio de la ruta (quitar el nombre de archivo)rsync -aP --no-links "$1" "$2"
-copie el archivo en el destino. Reemplace esto con mv "$1" "$2"
si ambos archivos están en el mismo sistema de archivos para un mejor rendimiento. -a
-preservar la propiedad y todos los demás permisos. Puede ajustar esto para conservar solo los componentes que desee. -P
-mostrar el progreso. --no-links
-no copie enlaces --esto significa que puede ejecutar este comando tantas veces como desee en el mismo archivo, y nunca perderá su archivo al sobrescribir accidentalmente su archivo de destino con un enlace simbólico a sí mismo. ln -sf "$2" "$1"
-sobrescribir el archivo antiguo con un enlace simbólico al archivo nuevo -s
-usar enlaces simbólicos -f
-sobrescribir el archivo antiguo