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 php
recursivamente? 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.php
e você queria que ele terminasse /home/jane/www/destination/1.php
no 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
rsync
para enviar para este diretório shadow e capturar a saída (--log-file
se você quiser fazer um script) - a partir da
rsync
saí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/