Como obtenho um diretório inteiro no sftp?

168

Estou apenas aprendendo a usar o sftp e quero copiar um diretório do computador remoto para o meu computador local. Se eu tentar

get [directory]

isso me dá esse erro:

Cannot download non-regular file: /home/mpirocch/Documents

get -R também não funciona.

    
por Matthew 12.09.2009 / 23:39

9 respostas

239

Use o sinalizador -r (recursivo):

get -r *
    
por 29.11.2010 / 22:38
51

Uso:

scp -r mpirocch@my-server:/home/mpirocch/Documents Documents
    
por 12.09.2009 / 23:51
38

Use lftp :

lftp sftp://user@host

Em seguida, dentro de lftp, cd no diretório que você deseja copiar, e use o comando mirror para baixar recursivamente o diretório selecionado, assim:

mirror

Este comando aceita opções e argumentos:

mirror [OPTIONS] [source [target]]

Por exemplo, a opção -R (ou --reverse ) fará com que ele carregue a árvore do diretório local para o diretório remoto:

mirror -R

Veja a página lftp(1) man no site do projeto ou em Debian.org para outros comandos e opções.

    
por 08.04.2010 / 15:54
15

Não use o programa sftp diretamente se puder encontrar algo melhor. Para o Linux, muitos gerenciadores de arquivos (pelo menos o Nautilus e o Dolphin, o GNOME e o KDE) suportam o sftp nativamente, e há sempre o sshfs. Para o Windows, há o WinSCP e provavelmente outros . O objetivo de tudo isso é permitir que você acesse arquivos através do sftp como se estivessem em um sistema de arquivos comum, para que você não precise se preocupar com o fato de estar acessando-os através do sftp.

    
por 13.09.2009 / 05:11
13

bem, este pequeno guia deve ajudar, espelhar um servidor remoto para pasta local com lftp

lftp sftp://user:[email protected]:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'

  • sftp:// = usa o protocolo SFTP
  • mirror = modo de espelho
  • verbose = mostra os arquivos que estão sendo baixados
  • use-pget-n = número de segmentos, muito útil para acelerar arquivos grandes
  • parallel = transfere arquivos multiplicadores ao mesmo tempo

se você deseja baixar arquivos em paralelo, mude use-pget-n=8 com --parallel=8

Espero que isso ajude quem precisa espelhar uma pasta remota para uma pasta local

    
por 10.03.2014 / 02:18
12

Experimente mget em vez de get .

Esclarecimento: mget irá funcionar se você estiver dentro do diretório que deseja copiar; se você fizer algo assim:

sftp> cd dir_to_get
sftp> mget *

ele irá obter todos os arquivos nesse diretório. No entanto, ele não obterá recursivamente o conteúdo de nenhum subdiretório.

    
por 13.09.2009 / 00:34
9
get -r [directory]

obtém [directory] e tudo sob ele, em que r significa recursivo. Eu encontrei isso apenas digitando help de sftp .

    
por 06.03.2012 / 17:56
4

Como com cp :

scp -rp user@host:/path/to/dir dir

O acima irá preservar os tempos e os modos dos arquivos e subdiretórios originais. Isso é especialmente útil para a recuperação de backups.

    
por 11.01.2013 / 10:50
0

Eu tenho a pasta java dist no servidor remoto, onde tenho a seguinte árvore:

- dist
--- Audio.jar
--- README
--- lib
----- lib.jar

O objetivo é: eu quero usar o SFTP? E coloque-os em / tmp / < >

Passo 1. sftp remoteuser @ ip

Etapa 2. cd / var / tmp

Etapa 2. lmkdir / tmp / dist; lmkdir / tmp / dist / lib

Etapa 3. lcd / tmp / dist

Etapa 4. mget *

Passo 5. lcd / tmp / dist / lib

Etapa 6. mget *

Passo 7. Finalmente eu tenho meu objetivo

$ ls
Audio.jar  lib  README.TXT
    
por 28.09.2011 / 10:39

Tags