Posso scp uma pasta que possui subpastas?

31

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?

Blankman
fonte
Eu prefiro tarvia ssh: unix.stackexchange.com/a/10028/79839
pintos

Respostas:

56

O comando scp -r source user@target:destpercorrerá todos os subdiretórios da fonte e os copiará.

No entanto, scpcomporta-se como cpe 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 rsynco ssh em vez de scp. Provavelmente algo como

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

...para começar. Se você estiver fazendo isso em uma LAN, eu pessoalmente usaria as opções -avWpara rsync.

O Rsync também permite duplicar exclusões na sua fonte; portanto, se você remover um arquivo da sua árvore, poderá executar rsynccomo acima e incluir o sinalizador --delete, que removerá o mesmo arquivo do lado do destino.

David Mackintosh
fonte
9

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

-r      Recursively copy entire directories.  Note that scp follows symbolic
          links encountered in the tree traversal.
Zypher
fonte
2

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.)

Luke Schlather
fonte