scp apenas determinados arquivos

4

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

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

Existe uma maneira que eu possa usar o scp para copiar todos os arquivos com extensão php , recursivamente? como isso:

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

RESULTADO DESEJADO

//on local machine
$ find ./source

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

//command to copy the files
$ [scp command here]

//on remote server
$ find ./destination

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

ISTO NÃO FUNCIONA

//on local machine
$ find ./source

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

//command to copy the files
$ cd source; scp -r *.php user@remote:/destination 

//on remote server
$ find ./destination

destination/1.php
destination/2.php

Talvez pudéssemos usar o find, mas tenho certeza de que não funcionará como está :

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

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

Além disso, pode ser difícil conseguir que os caminhos se alinhem no servidor remoto, por exemplo, se o find estava retornando /users/johndoe/documents/source/1.php e você queria que ele terminasse em /home/jane/www/destination/1.php no servidor remoto.

    
por cwd 16.08.2011 / 21:44

3 respostas

2

aqui está o que eu faço quando um host ony permite empurrar coisas, e não rsync:

  • crie um diretório "shadow" em sua máquina local para se assemelhar estrutura de destino
  • use rsync para enviar para esse diretório de sombra e capture a saída (há --log-file se você quiser fazer o script)
  • da saída rsync , determine os arquivos que você precisa excluir ou empurre e faça uma lista
  • talvez (depende da maneira como você pressiona): crie um pacote a partir dos arquivos que precisam ser alterados apenas
  • inicie sua ferramenta push - ftp, scp, o que for - e deixe rodar nos arquivos da lista
por 12.11.2013 / 19:54
0

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

    
por 16.08.2011 / 21:47
-1

scp -r user @ ip: / dados / arquivos / *. php / tmp / files /

    
por 11.07.2013 / 10:23