AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 264595
Accepted
kernel
kernel
Asked: 2011-04-29 20:24:45 +0800 CST2011-04-29 20:24:45 +0800 CST 2011-04-29 20:24:45 +0800 CST

O scp pode copiar diretórios recursivamente?

  • 772

Atualmente só posso copiar um único .tararquivo. Mas como posso copiar diretórios recursivamente com scp?

linux scp
  • 9 9 respostas
  • 992982 Views

9 respostas

  • Voted
  1. Best Answer
    dmourati
    2011-04-29T20:28:41+08:002011-04-29T20:28:41+08:00

    Sim, use -r:

    scp -rp sourcedirectory user@dest:/path
    
    • -r significa recursivo
    • -p preserva os tempos de modificação, tempos de acesso e modos do arquivo original.

    Nota: Isso cria o sourcedirectoryinterior /pathpara que os arquivos fiquem em/path/sourcedirectory

    • 1212
  2. Phil Hollenback
    2011-04-29T21:11:23+08:002011-04-29T21:11:23+08:00

    Embora as respostas anteriores estejam tecnicamente corretas, você também deve considerar o uso rsync. rsynccompara os dados nos lados de envio e recebimento com um mecanismo de comparação para não precisar reenviar dados que já foram enviados anteriormente.

    Se você for copiar algo para uma máquina remota mais de uma vez, use rsync. Na verdade, é bom usar rsyncsempre porque tem mais controles para coisas como copiar permissões e propriedade de arquivos e excluir certos arquivos ou diretórios. No geral:

    $ rsync -av /local/dir/ server:/remote/dir/
    

    irá sincronizar um diretório local com um diretório remoto. Se você executá-lo uma segunda vez e o conteúdo do diretório local não for alterado, nenhum dado será transferido - muito mais eficiente do que executar scpe copiar tudo sempre.

    Além disso, rsyncpermite que você se recupere de transferências interrompidas com muita facilidade, ao contrário do scp.

    Finalmente, as versões modernas do rsyncssh são executadas por padrão, portanto, se scpjá estiver funcionando, rsyncdeve ser uma substituição imediata.

    • 208
  3. HedgeMage
    2011-04-29T20:27:57+08:002011-04-29T20:27:57+08:00

    É para isso que serve a -ropção. :)

    Consulte a página de manual do scp para obter mais informações, se necessário.

    • 38
  4. Tarun
    2013-09-12T09:53:51+08:002013-09-12T09:53:51+08:00

    Opção de cópia recursiva '-r' (minúsculas)

    scp -r
    

    Que eu confundo com a opção de cópia recursiva local regular '-R' (maiúsculas)

    cp -R
    
    • 20
  5. mick
    2015-11-06T10:33:20+08:002015-11-06T10:33:20+08:00

    A melhor maneira é usar rsync sobre SSH

    rsync -a -essh /source/ user@dest-server:/dest/
    
    rsync -a -essh user@source-server:/source/ /dest/
    

    Minhas opções favoritas são -Pazvessh --delete :

    • -a : modo de arquivo (inclui muitas opções comuns padrão, incluindo a preservação de links simbólicos)
    • -z: comprimir
    • -v : verbose : mostra os arquivos
    • -P : mostra o progresso como arquivos concluídos/arquivos restantes
    • -e ssh : faz rsync no protocolo ssh
    • --delete : exclui arquivos no destino que não estão mais na origem
    • 14
  6. user9869932
    2015-06-07T10:00:04+08:002015-06-07T10:00:04+08:00

    Depois de procurar o sinalizador de cópia recursiva e usá-lo com sucesso graças a este post, gostaria de postar apenas uma sugestão.

    Se o caso for que você está copiando (recursivamente) um diretório. Talvez se os arquivos forem enviados compactados você possa economizar tempo na transferência

    O que eu fiz no final foi:

    local$ tar -czvf local.tar.gz directory/
    local$ scp local.tar.gz user@remote:/directory
    ssh user@remote
    remote$ tar -xzvf local.tar.gz
    

    Espero que isto ajude

    • 8
  7. Anubioz
    2016-01-06T23:20:21+08:002016-01-06T23:20:21+08:00

    Você pode copiar recursivamente um diretório em um arquivo compactado com este comando simples:

    ssh -p 22 [email protected]  'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz
    

    Por exemplo, para copiar o conteúdo de /var/logde domain.compara ~/logs.tgzvocê execute:

    ssh -p 22 [email protected]  'cd /var && tar zcvf - log' > ~/logs.tgz
    

    Você também pode extrair arquivos no sistema de destino usando pipes. Este comando copiará o conteúdo de /var/logat domain.comto ~/destination/logem seu sistema:

    ssh -p 22 [email protected]  'cd /var && tar zcvf - log' | tar xzf - -C ~/destination
    

    Embora para espelhar um diretório, você provavelmente deve usar rsync...

    • 4
  8. Franck Dernoncourt
    2016-01-06T22:49:03+08:002016-01-06T22:49:03+08:00

    Se preferir passar a senha do usuário como parâmetro ao invés de inseri-la interativamente, você pode usar sshpass( sudo apt-get install -y sshpass).

    Exemplo:

    sshpass -p 'remote_password' scp -rp /src/folder [email protected]:/dest/folder
    
    • 3
  9. atthik
    2019-04-23T06:00:06+08:002019-04-23T06:00:06+08:00

    Você pode usar a opção -r com o comando scp para copiar diretórios recursivamente em qualquer sistema. Se precisar de mais alguma coisa, consulte o tutorial do comando scp . A opção -r significa operação recursiva na maioria dos comandos do Linux.

    • 2

relate perguntas

  • Protegendo um novo servidor Ubuntu [fechado]

  • (Soft) RAID 6 no Ubuntu 7.10, devo migrar para 8.10?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Resolver o nome do host do endereço IP

    • 8 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve