Automatizar transferencia de archivos a través de WinSCP 6


En el post anterior vimos cómo automatizar-ejecucion-de-comandos-a-traves-de-putty y luego de ejecutar los comandos de respaldo, necesitaba una forma de descargarlo, siempre lo hago visualmente con WinSCP pero esta vez quería probarlo bajo consola.

Podemos descargar WinSCP desde la página oficial: https://winscp.net/eng/download.php

WinSCP también nos provee con una consola para ejecución de sus comandos, podemos ingresar fácilmente entrando en la ruta donde se instaló, desde una consola de comandos de windows CMD «cd C:\Program Files (x86)\WinSCP» e ingresamos con el comando «winscp» o el más usado «winscp.com«.

Una vez ingresado, solo podemos ejecutar comandos propios de winscp, existen un grupo de comandos en la documentación y para llamar comandos externos también hay una opción. Ejemplo para conectarnos a sitios solo necesitamos indicar el protocolo y url

«open sftp:tusitioweb»

y te pedirá usuario y contraseña, una vez ingresado puedes usar comandos básicos como listar o cambiar carpetas, para comandos en Linux puedes usar «call«, «call zip archivo«, «call mysqldump» e incluso para ejecutar archivos .sh «call ./script_respaldo.sh«.

Para transferencias de archivos usamos «get«, «get /carpeta/remoto C:\carpeta\local» la cual también sirve para archivos individuales, grupos o podemos realizar búsquedas que nos permite con los patrones de winscp «carpeta/*.txt» la cual indica todos los archivos txt en esa carpeta, e incluso métodos más avanzados «carpeta/*.txt=%TIMESTAMP#yyyy-mm-dd%» la cual indica todos los archivos txt que sean igual a la fecha de hoy.

Automatización.

Igual que con putty realizaré un archivo batch para bajar los respaldos que he realizado. También tiene múltiples formas de loguearse (sesiones guardadas, claves ssh, simple usuario y contraseña en url, etc.), en este caso usé la simple.

«open sftp://usuario:contraseña@tuweb.com:22/» al final se puede colocar el puerto, es necesario si en el servidor se cambió el puerto por defecto.

Toma en cuenta que al scribir en un batch, debemos escapar ciertos caracteres, si un archivo tiene nombre en comillas, debemos usar dobles para escaparlas «carpeta/»»nombre_archivo»»/otro», incluso el porcentaje del timestamp se debe colocar dobles «%%TIMESTAMP#yyyy-mm-dd %%».

Al igual que el putty se puede utilizar un archivo para ejecutar comandos o como en mi caso, poner todos los comandos en línea para no usar varios archivos. Podemos agregar el comando «exit» al final para cerrar la ventana o no colocarlo si deseamos ver el resultado.

El archivo batch final quedaría así:

descargar_respaldo.bat

Los comandos van en una sola línea, separados por espacio y siempre en comillas dobles. Allí podríamos agregar también el comando de ejecución .sh «call ./script_respaldo.sh» para realizar el respaldo antes de copiar los archivos generados. El timestamp usa mayor igual >= para transferir los archivos con fecha de hoy o mayores.

El post de putty nos sirve para ejecutar comandos. Este post con winscp permite tanto comandos como transferencias, ya es cuestión de darle utilidad para automatizar procesos.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

6 ideas sobre “Automatizar transferencia de archivos a través de WinSCP