Use o sinalizador -r
(recursivo):
get -r *
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.
Uso:
scp -r mpirocch@my-server:/home/mpirocch/Documents Documents
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.
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.
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
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.
get -r [directory]
obtém [directory]
e tudo sob ele, em que r
significa recursivo. Eu encontrei isso apenas digitando help
de sftp
.
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.
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