Eu estou tentando copiar arquivos alterados para godaddy via ssh. Godaddy é terrível e por isso eles 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 queria saber se eu poderia scp apenas todos os arquivos php.
Existem muitos sub-diretórios, então eu preciso usar a opção -r.
Existe uma maneira que eu possa usar 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 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 $ find ./destination 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
//on local machine $ find ./source 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 $ cd source; scp -r * .php usuario @ remoto: / destino // no servidor remoto $ find ./destination destino / 1.php destino / 2.php
Talvez pudéssemos tentar usar find também, mas eu tenho certeza que isso não vai funcionar como está :
find ./source -name "*.php" -exec scp {} user@remote:{} \;
Isso não vai funcionar porque eu não acho que você pode usar vários {}
operadores em encontrar.
Além disso, pode ser difícil obter os caminhos para alinhar no servidor remoto, por exemplo, se a localização estava retornando /users/johndoe/documents/source/1.php
e você queria acabar em /home/jane/www/destination/1.php
no servidor remoto.
cat phpfiles.tar | ssh user@remote "cd destination && tar cf -"
para transferir todos os seus arquivos de uma só vez.{}
fichas? Parece promissor (você posso usar múltiplos{}
), talvez você precise especificaruser@remote:~/{}
como destino.Respostas:
aqui está o que eu faço quando um host só permite empurrar coisas, e não rsync:
rsync
para empurrar para este diretório de sombra, e capturar a saída (há--log-file
se você quiser fazer um script)rsync
saída, determine os arquivos que você precisa excluir ou empurre e faça uma listafonte
Você não pode fazer
scp -r *.php destination
?fonte
/local/html
? todos os arquivos * .php? só mudou*.php
arquivos? o que faz argumento-name
significar?-name
é o parâmetro que o rsync usa para filtrar apenas arquivos php. Eu gostaria de copiar apenas arquivos alterados (como o rsync), mas como o rsync não está disponível, eu gostaria apenas de copiar apenas arquivos php (para economizar largura de banda). Isso faz sentido? Eu acho que eu poderia fazer umfind -exec scp
comando, mas eu precisaria pegar o basepath e certifique-se de que é adicionado ao argumento de destino também. Parece que deveria haver uma maneira fácil de fazer isso.scp -r user @ ip: / dados / arquivos / *. php / tmp / files /
fonte