scp apenas alguns arquivos

scp apenas alguns arquivos

Estou tentando copiar arquivos alterados para godaddy via ssh. Godaddy é terrível e é claro que eles não permitem o rsync. Posso usar o scp, mas realmente só quero copiar os arquivos alterados. Eu não acho que isso seja possível, então fiquei pensando se talvez eu pudesse scp apenas todos os arquivos php.

Existem muitos subdiretórios, então preciso usar a opção -r.

Existe uma maneira de usar o scp para copiar todos os arquivos com extensão phprecursivamente? assim:

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

RESULTADO DESEJADO

//na máquina local
$ encontrar ./fonte

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

//comando para copiar os arquivos
$ [comando scp aqui]

//no servidor remoto
$ encontrar ./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

ISSO NÃO FUNCIONA

//na máquina local
$ encontrar ./fonte

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

//comando para copiar os arquivos
$ fonte do cd; scp -r *.php usuário@remoto:/destino

//no servidor remoto
$ encontrar ./destino

destino/1.php
destino/2.php

Talvez pudéssemos tentar usar find também, mas tenho certeza de que issonão funcionará como está:

find ./source -name "*.php" -exec scp {} user@remote:{} \;

Isso não funcionará porque não acho que você possa usar vários {}operadores no find.

Além disso, pode ser complicado alinhar os caminhos no servidor remoto, por exemplo, se find estava retornando /users/johndoe/documents/source/1.phpe você queria que ele terminasse /home/jane/www/destination/1.phpno servidor remoto.

Responder1

aqui está o que eu faço quando um host só permite enviar coisas e não rsync:

  • crie um diretório "sombra" em sua máquina local para se parecer com a estrutura de destino
  • use rsyncpara enviar para este diretório shadow e capturar a saída ( --log-filese você quiser fazer um script)
  • a partir da rsyncsaída, determine os arquivos que você precisa excluir ou envie e faça uma lista
  • talvez (depende de como você envia): crie um pacote a partir dos arquivos que precisam ser alterados apenas
  • inicie sua ferramenta push - ftp, scp, qualquer que seja - e deixe-a rodar nos arquivos da lista

Responder2

Você não pode fazer scp -r *.php destination?

Responder3

scp -r usuário@ip:/data/files/*.php /tmp/files/

informação relacionada