Como obter recursivamente uma pasta através de FTP no Linux [fechado]
estou a tentar ftp uma pasta usando o cliente ftp da linha de comandos, mas até agora só fui capaz de usar 'get' para obter ficheiros individuais.
12 answers
Você pode contar com o wget que normalmente lida com ftp get corretamente (pelo menos na minha própria experiência). Por exemplo:
wget -r ftp://user:[email protected]/
Também pode utilizar {[4] } que é adequado para espelhar. É actualmente equivalente a -r -N -l inf
.
Se tiver alguns caracteres especiais nos detalhes credenciais, poderá especificar os argumentos --user
e --password
para que funcione. Exemplo com autenticação personalizada com caracteres específicos:
wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/
Editar
Como apontado por @asmaier, observe out that even if -r
is for recursion, it has a default max level of 5:
Se não queres perder subdirs, é melhor usares a opção de espelhamento.,-r --recursive Turn on recursive retrieving. -l depth --level=depth Specify recursion maximum depth level depth. The default maximum depth is 5.
-m
:
-m --mirror Turn on options suitable for mirroring. This option turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP directory listings. It is currently equivalent to -r -N -l inf --no-remove-listing.
Eu usei
wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory
Repare na barra dupla a seguir ao nome do servidor. Se eu não colocar uma barra extra o caminho é relativo ao diretório home do Usuário.
- - nH evita a criação de um directório com o nome do servidor
- - nc evita criar um novo ficheiro se já existir no destino (é apenas ignorado)
- --cut-dirs = 5 permite-me levar o conteúdo de /absolute/path/to / directory e colocá-lo na pasta onde lanço o wget. O número 5 é usado para filtrar os 5 componentes do caminho. A barra dupla significa um componente extra.
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
Se lftp
estiver instalado na sua máquina, utilize mirror dir
. E acabou-se. Veja o comentário de Ciro abaixo se quiser obter recursivamente uma pasta.
Se puder usar scp
em vez de ftp
, a opção -r
fará isto por si. Gostaria de verificar se você pode usar um mecanismo de transferência de arquivos mais moderno do que FTP.
Existe o 'ncftp' que está disponível para instalação no linux. Isto funciona no protocolo FTP e pode ser usado para baixar arquivos e pastas recursivamente. funciona no linux. Foi usado e está a funcionar bem para a transferência recursiva de pasta/ficheiro.
Verifique esta ligação... http://www.ncftp.com/
Usa o WGet em vez dele. Ele suporta protocolos HTTP e FTP.
wget -r ftp://mydomain.com/mystuff
Boa Sorte!
Referência: http://linux.about.com/od/commands/l/blcmdl1_wget.htm
Se puder, sugiro-lhe fortemente {[[0]} e bzip
(ou gzip
, seja o que for que flutue no seu barco) o directório na máquina remota-para um directório de qualquer tamanho significativo, a poupança de largura de banda provavelmente valerá o tempo para zip/unzip.
Se quiser manter a linha de comandos FTP, deve tentar o NcFTP. Então você pode usar o get-R para obter recursivamente uma pasta. Você também terá conclusão.
wget -r ftp://url
Funciona perfeitamente Para Redhat e Ubuntu
Não deve utilizar ftp
. Como telnet
não está a usar protocolos seguros, e as senhas são transmitidas em texto claro. Isso torna muito fácil para terceiros capturar o seu nome de usuário e senha.
Para copiar as pastas remotas remotamente, estas opções são melhores:
rsync
é a ferramenta mais adequada se você puder fazer login através dessh
, porque copia apenas as diferenças, e pode facilmente reiniciar no meio, no caso da conexão quebra.ssh -r
é a segunda melhor opção para copiar recursivamente estruturas de diretórios.
Ver:
Rsync man page
Activa ou desactiva a linha de comandos pelo comando PROMPT.
Utilização:
ftp>cd /to/directory
ftp>prompt
ftp>mget *