Posso scp uma pasta que tenha subpastas?

28

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, eu 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, imaginando se o scp seria capaz de lidar com isso?

    
por Blankman 11.02.2011 / 04:40

3 respostas

51

O comando scp -r source user@target:dest irá percorrer todos os subdiretórios source e copiá-los.

No entanto, scp se comporta como cp e sempre copia arquivos, mesmo que seja o mesmo na origem e no destino. [Veja aqui por um período 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 você achará que as coisas avançam mais rápido se você usar rsync over ssh em vez de scp . Provavelmente algo como

rsync -av -e ssh source user@target:dest

... para começar. Se você estiver fazendo isso através de uma LAN, eu pessoalmente utilizaria as opções -avW em vez de rsync .

O rsync também oferece a capacidade de duplicar exclusões na sua origem; Portanto, se você remover um arquivo da sua árvore, poderá executar rsync como acima e incluir o sinalizador --delete e ele removerá o mesmo arquivo do lado do destino.

    
por 11.02.2011 / 04:53
8

scp tem um sinalizador recursivo que fará o que você quiser. scp -r /base/directory user@server:/to/location

de man scp

-r      Recursively copy entire directories.  Note that scp follows symbolic
          links encountered in the tree traversal.
    
por 11.02.2011 / 04:54
2

scp -r e rsync -r são as formas mais confiáveis de conseguir o que você quer, como outros notaram.

Você também pode usar o sshfs para "montá-lo" como se fosse uma unidade local: sshfs user@host:/site /mnt/mountpoint

(No entanto, você provavelmente é melhor trabalhar localmente e implantar com o rsync. Apenas uma outra ferramenta para estar ciente.)

    
por 14.02.2011 / 22:52