Estou tentando ftp uma pasta usando o cliente ftp da linha de comando, mas até agora só consegui usar 'get' para obter arquivos individuais.
Estou tentando ftp uma pasta usando o cliente ftp da linha de comando, mas até agora só consegui usar 'get' para obter arquivos individuais.
Respostas:
Você pode confiar no wget, que geralmente lida com o ftp get corretamente (pelo menos na minha própria experiência). Por exemplo:
wget -r ftp://user:pass@server.com/
Você também pode usar o -m
que é adequado para espelhamento. Atualmente é equivalente a -r -N -l inf
.
Se você tiver alguns caracteres especiais nos detalhes da credencial, poderá especificar os argumentos --user
e --password
para fazê-lo funcionar. Exemplo com login personalizado com caracteres específicos:
wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/
EDIT
Conforme apontado por @asmaier, observe que, mesmo que -r
seja para recursão, ele possui um nível máximo padrão de 5:
-r --recursive Turn on recursive retrieving. -l depth --level=depth Specify recursion maximum depth level depth. The default maximum depth is 5.
Se você não deseja perder subdiretórios, use melhor a opção de espelhamento -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.
wget -m
( --mirror
). wget -r
é limitado a uma profundidade de recursão de 5 por padrão.
--user
e --password
também no Red Hat. Meu wget é: GNU Wget 1.11.4 Red Hat modified
Gostaria de saber se é uma coisa versão ou uma coisa distro ...
-l 0
, então não há necessidade de usar --mirror
que pode ter alguns efeitos colaterais indesejáveis, tais como .listing arquivos
wget --ask-password -rl 99 ftp://user@server.com
. Dessa forma, a senha não é visível ps
e não permanece no histórico. Obviamente, pela natureza do ftp, ele é enviado sem criptografia para o servidor.
$
), por exemplo--user='user' --password='pa$$word'
Apenas para complementar a resposta dada por Thibaut Barrère.
eu usei
wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory
Observe a barra dupla após o nome do servidor. Se você não colocar uma barra extra, o caminho será relativo ao diretório inicial do usuário.
-nH
evita a criação de um diretório com o nome do servidor-nc
evita a criação de um novo arquivo, se ele já existir no destino (é apenas ignorado) --cut-dirs=5
permite pegar o conteúdo do diretório / absolute / path / to / e colocá-lo no diretório em que você inicia o wget. O número 5 é usado para filtrar os 5 componentes do caminho. A barra dupla significa um componente extra.--ftp-user=USER
e --ask-password
.
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
open ftp://USERNAME:PASSWORD@HOST
após o início ncftp ...
wget
e mais rápido também no modo TAR. Obrigado!
Se lftp
estiver instalado em sua máquina, use mirror dir
. E você terminou. Veja o comentário de Ciro abaixo se você deseja baixar recursivamente um diretório.
mirror -R dir
faz upload / atualização recursiva de diretório
mirror ./
para baixar todos os arquivos e pastas recursivamente no caminho atual.
mirror
, para o diretório atual e suas subpastas.
Se você pode usar em scp
vez de ftp
, a -r
opção fará isso por você. Gostaria de verificar se você pode usar um mecanismo de transferência de arquivos mais moderno que o FTP.
scp
ainda tentará usar ssh, o que não funcionará se você tiver apenas credenciais de FTP. Sente estranho responder a um comentário a partir de 2008 dizendo que a tecnologia que eu estou preso com não é moderno :( bom e velho 2008, completou 18 anos no dia que você postou seu comentário.
Use WGet em vez disso. 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
Existe o 'ncftp' que está disponível para instalação no linux. Isso funciona no protocolo FTP e pode ser usado para baixar arquivos e pastas recursivamente. trabalha no linux. Foi usado e está funcionando bem para transferência recursiva de pastas / arquivos.
Verifique este link ... http://www.ncftp.com/
Se você puder, eu sugiro fortemente que você tar
e bzip
(ou gzip
, seja qual for o seu barco flutua) o diretório no controle remoto máquina para um diretório de qualquer tamanho significativo, a economia de largura de banda será provavelmente vale o tempo para zip / unzip.
Você não deve usar ftp
. Como telnet
se não estivesse usando protocolos seguros, e as senhas são transmitidas em texto não criptografado. Isso facilita a captura de seu nome de usuário e senha por terceiros.
Para copiar diretórios remotos remotamente, essas opções são melhores:
rsync
é a ferramenta mais adequada se você puder fazer login via ssh
, porque copia apenas as diferenças e pode reiniciar facilmente no meio, caso a conexão seja interrompida.
ssh -r
é a segunda melhor opção para copiar recursivamente as estruturas de diretório.
Vejo:
alterne o prompt pelo comando PROMPT.
Uso:
ftp>cd /to/directory
ftp>prompt
ftp>mget *
mget
, não é recursivo. resposta de 22/09/08 às 09:01 Thibaut Barrère é mais fácil de entender, mas deve adicionar a opção-l 0
conforme mencionado nos comentários