Questão Como obtenho um diretório inteiro no sftp?


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 não funciona também.


159


origem


O put / get recursivo foi adicionado ao OpenSSH em 5.4, que foi lançado em 2010. Você pode considerar a atualização de seus servidores, pois ele também adiciona muitas correções de bugs e melhores recursos de segurança. - Lèse majesté


Respostas:


Use o -r bandeira (recursiva):

get -r *

231



Obrigado por colocar uma resposta que realmente responde à pergunta. - jonnyflash
Me dá: get: Invalid flag -r - ghbarratt
Isso também me dá um sinalizador inválido. Não tenho certeza se isso é suportado em todos os sistemas. - Ben
@Ben: Quando fiz esta pergunta em 2009, o -r bandeira não existia. Seu sistema está atualizado? - Matthew
@silvinci não todos sistemas atuais. Opção ilegal com o CentOS 6.4 openssh-clients-5.3p1-84.1.el6.x86_64 - CrackerJack9


Usar:

scp -r mpirocch@my-server:/home/mpirocch/Documents Documents

51



Isso funciona, mas seria bom poder fazer isso a partir do SFTP (para que eu possa ver o que copio antes de copiá-lo). Isso é possível? - Matthew
@Matthew: Eu não penso assim. Eu tenho me feito a mesma pergunta há algum tempo e a melhor resposta que tenho para o momento é scp -r. Ou você pode usar um cliente SFTP avançado como o Filezilla. - Cristian Ciupitu
scp -r seguirá links simbólicos ... - jsleuth
Alguns sistemas podem permitir sftp, mas não scp Acesso. - Turion


Usar lftp:

lftp sftp://user@host

Então use o mirror comando para fazer o upload recursivamente, assim:

mirror -R

Ou para enviar apenas:

mirror

Voce tem que cd nos diretórios que você deseja espelhar. Funciona magicamente!


36



+1 lftp é como um pequeno pacote de mágica e alegria! - WCWedin


Não use o programa sftp diretamente se você 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 outras. 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 acessá-los através do sftp.


15



Uau, o nautilus funciona muito bem com o SFTP. Eu adicionei um marcador no Nautilus, e agora é tudo ridiculamente fácil. Obrigado! - Matthew
Eu tive problema de desempenho com o Nautilus SFTP. Sim, é muito conveniente, mas eu não consegui saturar a rede de 1 Gbit / s via Nautilus, enquanto com sftp/ssh interface de linha de comando eu estava (cca 100 MB / s transferências de arquivos). Então o problema era o Nautilus no GNU / Linux Mint. - stamster


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

lftp sftp://user:password@server.org:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'

  • sftp:// = usa o protocolo SFTP
  • mirror = modo 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ê quiser baixar arquivos em paralelo, desligue use-pget-n=8 com --parallel=8 

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


13



Obrigado, isso funcionou para mim, depois que os outros métodos falharam (em particular nenhuma opção "-r" no sftp). A primeira parte do comando no meu caso precisava ser citada, devido a caracteres em dólar na senha lftp 'sftp://user:pa$$word@server.org:22' -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path' - Jason


Experimentar mget ao invés de get.

Esclarecimento: mget  vai trabalhe 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 receberá recursivamente o conteúdo de nenhum subdiretório.


12



O mget não funciona melhor do que conseguir para mim. - Matthew
ficando Não é possível baixar arquivo não-regular com este - Dchris
Isso funcionou para mim em um sistema onde 'get -r' não funcionava. - Tchotchke


get -r [directory]

fica [directory] e tudo sob ele, onde r significa recursivo. Eu encontrei isso apenas digitando help a partir de sftp.


9



OMI esta é a melhor resposta para esta pergunta. :) - ramrunner
Esta é uma duplicata de um responda a partir de 29 de novembro de 2010 (quase um ano e meio atrás). - Cristian Ciupitu