Copiar con curl a un FTP de un directorio recursivo
Pues eso, si estás buscando la manera de copiar un directorio completo desde la consola desde linux, en mi caso ubuntu, con el comando curl puedes hacerlo, pero también vas a necesitar otros tantos comandos para complementarlo… por que como ya sabrás si has llegado hasta aquí, curl solo copia 1 solo fichero a la vez…
Para ello utilizaremos la magia de otros comandos como find y el maravilloso exec:
find eldirectorio/ -type f -exec curl --user username:password --ftp-create-dirs -T {} ftp://ftp.server.com/{} \;
Esta sencilla línea, hace varias cosas la primera es buscar con find en el directorio que indicamos a continuación y luego (no tengo ni idea del resto de parámetros) es ejecutar curl como si fuera la copia de 1 archivo, con la historia de que crea los directorios y subdirectorios y va copiando los archivos en su interior
Si además queremos cribar archivos por fecha de modificación, por ejemplo los últimos 5 días o lo de hace 1 mes aproximadamente, podemos utilizar -mtime definiendo -5 para todo lo de hace menos de 5 días o +10, para todo lo que tenga más de 10 dias, pudiendo usar ambos por ejemplo:
find eldirectorio/ -type f -mtime -10 -mtime +5 -exec curl --user username:password --ftp-create-dirs -T {} ftp://ftp.server.com/{} \;
En este ejemplo anterior estaríamos copiando lo que tenga menos de 10 días, pero más de 5.
Todo un comando que me acaba de salvar horas de mirar la pantalla con mi filezilla comiéndose la conexión de casa.
A disfrutarlo 😉
Comments
Excelente comando para copiar, mi pregunta es el comando para copiar un listado de archivos con una extension particular como sería
Si buscas en la ayuda del comando find, encontrarás que puedes utilizar la opción -name, prueba a utilizara un comodín tipo * como harías de forma común en cualquier comando, por ejemplo -name “*.pdf” para que tome solo pdfs.
No lo he utilizado así, pero supongo que podrá funcionar.
Ya me cuentas 😉