{"id":547,"date":"2018-01-14T15:11:31","date_gmt":"2018-01-14T19:41:31","guid":{"rendered":"http:\/\/gregorgonzalez.com.ve\/blog\/?p=547"},"modified":"2018-01-14T15:11:31","modified_gmt":"2018-01-14T19:41:31","slug":"automatizar-transferencia-de-archivos-a-traves-de-winscp","status":"publish","type":"post","link":"http:\/\/gregorgonzalez.com.ve\/blog\/automatizar-transferencia-de-archivos-a-traves-de-winscp\/","title":{"rendered":"Automatizar transferencia de archivos a trav\u00e9s de WinSCP"},"content":{"rendered":"<p>En el post anterior vimos c\u00f3mo <a href=\"http:\/\/gregorgonzalez.com.ve\/blog\/automatizar-ejecucion-de-comandos-a-traves-de-putty\/\" target=\"_blank\" rel=\"noopener\">automatizar-ejecucion-de-comandos-a-traves-de-putty<\/a> y luego de ejecutar los comandos de respaldo, necesitaba una forma de descargarlo, siempre lo hago visualmente con WinSCP pero esta vez quer\u00eda probarlo bajo consola.<\/p>\n<p>Podemos descargar WinSCP desde la p\u00e1gina oficial: <a href=\"https:\/\/winscp.net\/eng\/download.php\" target=\"_blank\" rel=\"noopener\">https:\/\/winscp.net\/eng\/download.php<\/a><\/p>\n<p>WinSCP tambi\u00e9n nos provee con una consola para ejecuci\u00f3n de sus comandos, podemos ingresar f\u00e1cilmente entrando en la ruta donde se instal\u00f3, desde una consola de comandos de windows CMD \u00ab<strong>cd C:\\Program Files (x86)\\WinSCP<\/strong>\u00bb e ingresamos con el comando \u00ab<strong>winscp<\/strong>\u00bb o el m\u00e1s usado \u00ab<strong>winscp.com<\/strong>\u00ab.<\/p>\n<p>Una vez ingresado, solo podemos ejecutar comandos propios de winscp, existen un grupo de comandos en la documentaci\u00f3n y para llamar comandos externos tambi\u00e9n hay una opci\u00f3n. Ejemplo para conectarnos a sitios solo necesitamos indicar el protocolo y url<\/p>\n<p>\u00ab<strong>open sftp:tusitioweb\u00bb<\/strong><\/p>\n<p>y te pedir\u00e1 usuario y contrase\u00f1a, una vez ingresado puedes usar comandos b\u00e1sicos como listar o cambiar carpetas, para comandos en Linux puedes usar \u00ab<strong>call<\/strong>\u00ab, \u00ab<strong>call zip archivo<\/strong>\u00ab, \u00ab<strong>call mysqldump<\/strong>\u00bb e incluso para ejecutar archivos .sh \u00ab<strong>call .\/script_respaldo.sh<\/strong>\u00ab.<\/p>\n<p>Para transferencias de archivos usamos \u00ab<strong>get<\/strong>\u00ab, \u00ab<strong>get \/carpeta\/remoto C:\\carpeta\\local<\/strong>\u00bb la cual tambi\u00e9n sirve para archivos individuales, grupos o podemos realizar b\u00fasquedas que nos permite con los patrones de winscp \u00ab<strong>carpeta\/*.txt<\/strong>\u00bb la cual indica todos los archivos txt en esa carpeta, e incluso m\u00e9todos m\u00e1s avanzados \u00ab<strong>carpeta\/*.txt=%TIMESTAMP#yyyy-mm-dd%<\/strong>\u00bb la cual indica todos los archivos txt que sean igual a la fecha de hoy.<\/p>\n<p>Automatizaci\u00f3n.<\/p>\n<p>Igual que con putty realizar\u00e9 un archivo batch para bajar los respaldos que he realizado. Tambi\u00e9n tiene m\u00faltiples formas de loguearse (sesiones guardadas, claves ssh, simple usuario y contrase\u00f1a en url, etc.), en este caso us\u00e9 la simple.<\/p>\n<p>\u00ab<strong>open sftp:\/\/usuario:contrase\u00f1a@tuweb.com:22\/<\/strong>\u00bb al final se puede colocar el puerto, es necesario si en el servidor se cambi\u00f3 el puerto por defecto.<\/p>\n<p>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 \u00abcarpeta\/\u00bb\u00bbnombre_archivo\u00bb\u00bb\/otro\u00bb, incluso el porcentaje del timestamp se debe colocar dobles \u00ab%%<strong>TIMESTAMP#yyyy-mm-dd<\/strong> %%\u00bb.<\/p>\n<p>Al igual que el putty se puede utilizar un archivo para ejecutar comandos o como en mi caso, poner todos los comandos en l\u00ednea para no usar varios archivos. Podemos agregar el comando \u00ab<strong>exit<\/strong>\u00bb al final para cerrar la ventana o no colocarlo si deseamos ver el resultado.<\/p>\n<p>El archivo batch final quedar\u00eda as\u00ed:<\/p>\n<p><strong>descargar_respaldo.bat<\/strong><\/p>\n<pre class=\"lang:default decode:true \" title=\"descargar_respaldo.bat\">option batch abort\r\n\r\noption confirm off\r\n\r\ncd C:\\Program Files (x86)\\WinSCP\r\n\r\nwinscp.com \/command \"open sftp:\/\/usuario:123456@tuweb.com:22\/\" \"get \/administrador\/respaldos\/*&gt;=%%TIMESTAMP#yyyy-mm-dd%% C:\\Users\\gregor\\Desktop\\backup\"<\/pre>\n<p>Los comandos van en una sola l\u00ednea, separados por espacio y siempre en comillas dobles. All\u00ed podr\u00edamos agregar tambi\u00e9n el comando de ejecuci\u00f3n .sh \u00ab<strong>call .\/script_respaldo.sh<\/strong>\u00bb para realizar el respaldo antes de copiar los archivos generados. El timestamp usa mayor igual &gt;= para transferir los archivos con fecha de hoy o mayores.<\/p>\n<p>El post de putty nos sirve para ejecutar comandos. Este post con winscp permite tanto comandos como transferencias, ya es cuesti\u00f3n de darle utilidad para automatizar procesos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el post anterior vimos c\u00f3mo 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\u00eda probarlo bajo consola. Podemos descargar WinSCP desde la p\u00e1gina oficial: https:\/\/winscp.net\/eng\/download.php WinSCP tambi\u00e9n nos provee con una consola para ejecuci\u00f3n de sus comandos, podemos ingresar [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":550,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[11,151],"tags":[207,205,206,208],"_links":{"self":[{"href":"http:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/posts\/547"}],"collection":[{"href":"http:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/comments?post=547"}],"version-history":[{"count":0,"href":"http:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/posts\/547\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/media\/550"}],"wp:attachment":[{"href":"http:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/media?parent=547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/categories?post=547"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/tags?post=547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}