Utilice buscar con scp o rsync para enviar archivos encontrados

Utilice buscar con scp o rsync para enviar archivos encontrados

Estoy intentando ejecutar un comando simple que busca un tipo de archivo dedicado y, una vez encontrado, copia ese archivo y la estructura de directorio a un servidor remoto.

Por ejemplo:

find Source/ -name *.CR2 | xargs -d '\n' cp --parents -t /STORAGE/location/ 

En este caso, toma el archivo encontrado y lo copia en un directorio separado con la estructura de carpetas principal. Me gustaría hacer lo mismo con rsync o scp.

Probé algunos altercados en el código siguiente pero no tuve suerte.

find /src/dir/ -name *.CR2 -printf %P\\0 \ | rsync -av -e ssh --files-from=- --from0 /src/dir/ remote@server:/Storage/

Cualquier ayuda sería apreciada.

Estoy en el proceso de ordenar años de fotos familiares y en lugar de encontrarlas en un directorio de mi matriz zfs y reescribirlas en otra ubicación en la misma matriz (lo que consume tiempo), quiero encontrarlas y enviarlas a un máquina separada donde se ordenarán por tipo, se ejecutarán fdupesy luego se ejecutarán phockuppara ordenarlos por fecha. Lo estoy haciendo de esta manera por si me equivoco, tendré los archivos originales sanos y salvos.

Editar: Me gustaría agradecer a las personas que respondieron a mi pregunta. Afortunadamente encontré una solución antes de que respondieras, desafortunadamente no pensé en lo lenta que sería la solución. Así que opté por hacerlo como lo había hecho anteriormente.

Este fue el código que funcionó para mí. Aunque requirió algunas transferencias de claves ssh para funcionar correctamente, no necesitaría ingresar la contraseña para cada archivo.

find Sorted/ -name *.JPG -exec rsync -a -e ssh --relative '{}' usr@remote:/1/2/3/ ';'

Probaré algunas de las otras recomendaciones mencionadas y veré si son más rápidas, pero tal como están las cosas, terminé creando un script de shell que se ejecuta en segundo plano.

¡Gracias de nuevo!

Respuesta1

find Source/ -type f -name '*.CR2' -print0 |
    rsync --dry-run -av --files-from - --from0 . remote@server:/Storage/

Elimínelo --dry-runcuando esté satisfecho con lo que planea hacer.

Respuesta2

Debajo del comando podemos usar

 find  path -type f -iname "filename" -exec scp {} destinationhost:/var/tmp/ \;

información relacionada