Como copiar todos os arquivos de um diretório para um diretório remoto usando scp?

39

Meu objetivo é copiar somente todos os arquivos de ~ / local_dir para [email protected] / var / www / html / target_dir usando scp e não crie a categoria local_dir em local_dir.

/var/www/html/target_dir/files..

mas não

/var/www/html/target_dir/local_dir/files.. quando usar o parâmetro -r

    
por Edgaras Karka 30.09.2015 / 10:03

3 respostas

56

scp tem o argumento -r. Então, tente usar:

$ scp -r ~/local_dir [email protected]:/var/www/html/target_dir

O argumento -r funciona exatamente como o -r arg no cp, ele transferirá toda a pasta e todos os arquivos e subdiretórios contidos nela.

    
por 30.09.2015 / 10:07
14

Se seu objetivo for transferir todos os arquivos de local_dir , o curinga * fará o seguinte:

$ scp ~/local_dir/* [email protected]:/var/www/html/target_dir

A opção -r significa "recursivamente", portanto você deve escrevê-la quando estiver tentando transferir um diretório inteiro ou vários diretórios.

De man scp :

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

Portanto, se você tiver subdiretórios dentro de local_dir , o último exemplo só transferirá arquivos, mas se você definir a opção -r , ele transferirá arquivos e diretórios.

    
por 30.09.2015 / 14:37
10

Acrescentar /. ao seu diretório de origem irá transferir seu conteúdo em vez do próprio diretório. Em contraste com a solução curinga, isso também incluirá todos os arquivos ocultos.

$ scp -r ~/local_dir/. [email protected]:/var/www/html/target_dir

O crédito para esta solução vai para roaima, mas eu pensei que deveria ser postado como uma resposta real, não apenas um comentário.

    
por 23.04.2018 / 23:43

Tags