Eu tenho uma pasta que contém arquivos para um site estático, como:
/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...
Se eu atualizar algo no meu laptop, quero um único comando para enviar os arquivos para o meu servidor ubuntu. Eu não quero configurar o FTP nele, se eu não tiver também, me perguntando se o scp seria capaz de lidar com isso?
tar
viassh
: unix.stackexchange.com/a/10028/79839Respostas:
O comando
scp -r source user@target:dest
percorrerá todos os subdiretórios da fonte e os copiará.No entanto,
scp
comporta-se comocp
e sempre copia arquivos, mesmo que seja o mesmo na origem e no destino. [Veja aqui para uma solução alternativa.]Como este é um site estático, é provável que você esteja apenas fazendo atualizações, não recriando tudo, então provavelmente encontrará as coisas avançando mais rapidamente se você usar
rsync
o ssh em vez descp
. Provavelmente algo como...para começar. Se você estiver fazendo isso em uma LAN, eu pessoalmente usaria as opções
-avW
pararsync
.O Rsync também permite duplicar exclusões na sua fonte; portanto, se você remover um arquivo da sua árvore, poderá executar
rsync
como acima e incluir o sinalizador--delete
, que removerá o mesmo arquivo do lado do destino.fonte
O scp tem um sinalizador recursivo que fará o que você deseja.
scp -r /base/directory user@server:/to/location
a partir de
man scp
fonte
scp -r e rsync -r são as formas mais confiáveis de obter o que você deseja, como outros observaram.
Você também pode usar o sshfs para 'montá-lo' como se fosse uma unidade local:
sshfs user@host:/site /mnt/mountpoint
(No entanto, é provável que você esteja melhor trabalhando localmente e implantando com o rsync. Apenas outra ferramenta para estar ciente.)
fonte