scp solo ciertos archivos

scp solo ciertos archivos

Estoy intentando copiar archivos modificados a godaddy a través de ssh. Godaddy es terrible y, por supuesto, no permiten rsync. Puedo usar scp, pero en realidad solo quiero copiar archivos modificados. No creo que esto sea posible, así que me preguntaba si quizás podría escanear solo todos los archivos php.

Sin embargo, hay muchos subdirectorios, por lo que necesito usar la opción -r.

¿Hay alguna manera de usar scp para copiar todos los archivos con extensión phpde forma recursiva? como esto:

scp -r -name "*php" /local/html/ user@server:/home/html/ (No funciona)

RESULTADO DESEADO

//en la máquina local
$ buscar ./fuente

fuente/1.php
fuente/2.php
fuente/sub
fuente/sub/3.php
fuente/sub/4.php
fuente/sub/NO copiar.txt
fuente/sub/DONT-copy.png
fuente/sub/sub2
fuente/sub/sub2/5.php
fuente/sub/sub2/6.php

//comando para copiar los archivos
$ [comando scp aquí]

//en el servidor remoto
$ buscar ./destino

destino/1.php
destino/2.php
destino/sub
destino/sub/3.php
destino/sub/4.php
destino/sub/sub2
destino/sub/sub2/5.php
destino/sub/sub2/6.php

ESTO NO FUNCIONA

//en la máquina local
$ buscar ./fuente

fuente/1.php
fuente/2.php
fuente/sub
fuente/sub/3.php
fuente/sub/4.php
fuente/sub/NO copiar.txt
fuente/sub/DONT-copy.png
fuente/sub/sub2
fuente/sub/sub2/5.php
fuente/sub/sub2/6.php

//comando para copiar los archivos
$ cd fuente; scp -r *.php usuario@remoto:/destino

//en el servidor remoto
$ buscar ./destino

destino/1.php
destino/2.php

Quizás también podríamos intentar usar find, pero estoy bastante seguro de que estono funcionará como está:

buscar ./source -name "*.php" -exec scp {} usuario@remoto:{} \;

Eso no funcionará porque no creo que puedas usar múltiples {}operadores en buscar.

Además, puede ser complicado alinear las rutas en el servidor remoto, por ejemplo, si la búsqueda regresa /users/johndoe/documents/source/1.phpy desea que termine /home/jane/www/destination/1.phpen el servidor remoto.

Respuesta1

Esto es lo que hago cuando un host solo permite enviar cosas y no rsync:

  • cree un directorio "sombra" en su máquina local para que se parezca a la estructura de destino
  • utilícelo rsyncpara enviar a este directorio oculto y capturar la salida (hay una opción --log-filesi desea crear un script)
  • a partir de la rsyncsalida, determine los archivos que necesita eliminar, o presione y haga una lista
  • tal vez (depende de la forma en que presione): cree un paquete a partir de los archivos que solo deben cambiarse
  • Inicie su herramienta de inserción (ftp, scp, lo que sea) y déjela ejecutar en los archivos de la lista.

Respuesta2

¿No puedes hacerlo scp -r *.php destination?

Respuesta3

scp -r usuario@ip:/datos/archivos/*.php /tmp/archivos/

información relacionada