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


68

Meu objetivo é copiar apenas todos os arquivos de ~ / local_dir para user@host.com / var / www / html / target_dir usando scp e não criar 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


11
Não scp * user@host.com:/var/www/html/target_dirfaz o que você quer? Nesse caso, edite com mais detalhes o que você está tentando fazer e tentou até agora.
Michael Homer

Anexando /. não é mais trabalho. Mais aqui
Tsulatsi Tamim 20/03

Respostas:


91

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

$ scp -r ~/local_dir user@host.com:/var/www/html/target_dir

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


5
Seu comando criou o local_dirdiretório em / var / www / html / target_dir, meu objetivo é copiar apenas arquivos.
Edgaras Karka #

Desculpe, entendi errado. Em seguida, basta repetir o comando, mas assim: $ scp -r ~/local_dir user@host.com:/var/www/html/Renomeie o novo diretório, se necessário.
parazyd

8
Ou o que $ scp -r ~/local_dir/* user@host.com:/var/www/html/target_dirquer que flutue no seu barco.
parazyd

Como excluir certos diretórios do local, enquanto copiando para remoto
Sushivam

13
Altere o curinga *para um ponto .e você copiará o conteúdo do diretório (incluindo qualquer arquivo de ponto) sem copiar o próprio diretório. scp -pr ~/local_dir/. user@example.com:/path/to/target_dir
roaima

19

Se o seu objetivo é transferir todos os arquivos a partir local_dirdo *curinga faz o truque:

$ scp ~/local_dir/* user@host.com:/var/www/html/target_dir

A -ropção 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 local_dir, o último exemplo transferirá apenas arquivos, mas se você definir a -ropção, ele transferirá arquivos e diretórios.


1+ Porque você precisa ler os comentários na resposta aceita para obter a resposta correta, enquanto este apenas explica diretamente.
André Christoffer Andersen

17

Anexar /.ao seu diretório de origem transferirá seu conteúdo em vez do próprio diretório. Ao contrário da solução curinga, isso incluirá também os arquivos ocultos.

$ scp -r ~/local_dir/. user@host.com:/var/www/html/target_dir

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


0

Siga esses passos:

  1. Copie o diretório local_dircom todos os seus subdiretórios:

    scp -r ~/local_dir user@host.com /var/www/html/target_dir
    
  2. copie apenas o conteúdo local_dire não o diretório em local_dirsi:

    scp -r ~/local_dir/* user@host.com /var/www/html/target_dir
    
  3. Não use: scp -r ~/local_dir/. user@host.com /var/www/html/target_dirpois gera um erro (apenas testado e recebido o seguinte erro):

    scp: error: unexpected filename: .
    
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.