Usando o wget em um diretório fora do diretório inicial do usuário

1

Estou tentando espelhar um diretório via FTP com o wget. O comando que estou usando é

wget -m ftp://user:[email protected]/foo/bar/

Mas, quando eu o executo, recebo o seguinte:

--2018-10-10 15:01:32--  ftp://user:*password*@192.168.1.1/foo/bar/
       => ‘192.168.3.150/foo/bar/.listing’
Connecting to 192.168.1.1:21... connected.
Logging in as user ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /usr/user/foo/bar ... 
No such directory ‘foo/bar’.

Eu pesquisei as páginas de manual e pesquisei e não consigo descobrir. Como posso fazer o wget baixar o diretório "/ foo / bar /", e não "/ usr / user / foo / bar /"?

    
por HiddenWindshield 10.10.2018 / 22:16

2 respostas

3

Uma pergunta semelhante em stackoverflow (que envolveu java em vez de wget, mas realmente o problema subjacente é com a sintaxe da URL que é esperançosamente independente de linguagem) foi resolvida adicionando outra barra e codificando a URL, assim:

wget -m ftp://user:[email protected]/%2Ffoo/bar/

Funciona para mim mesmo sem codificação, apenas com uma barra extra:

wget -m ftp://user:[email protected]//foo/bar/

A primeira barra é descartada (servindo apenas como um separador entre o host e o caminho), e a segunda barra realmente conta como parte do caminho.

    
por 10.10.2018 / 22:58
0

Você deve conseguir baixar um diretório específico usando wget da seguinte forma:

wget -m 'ftp://[user]@192.168.1.1/%2ffoo/bar' -O /foo/bar

Eu evitaria colocar sua senha no URL, pois ela apareceria no histórico do bash. Este comando, claro, significa que /foo/bar está localizado fora de / e não em nenhum outro lugar. Se /foo/bar estiver localizado fora de algo como /var/www , você precisará incluir o caminho completo no comando.

Suponho que você esteja usando um baseado em UNIX com base no /usr/user , portanto, pode haver diferenças na função da implementação específica de wget que você está usando.

Aqui está uma alternativa usando curl :

curl -u [user] 'ftp://192.168.1.1/%2fpath/to/foo/bar' -o /path/to/foo/bar

Por favor, leia estes links:

URLs de FTP
Como usar o wget
Usando o wget para baixar recursivamente os diretórios FTP
Faça o download usando o wget para um diretório diferente do diretório atual
Como especificar o local com wget?
Baixando arquivos do FTP usando cURL

Por favor, comente se você tiver dúvidas ou problemas com esta resposta. Eu sugiro que você leia cada link que eu forneci completamente antes de tentar os comandos. Eu aprecio o feedback para corrigir quaisquer equívocos e melhorar minhas postagens. Eu posso atualizar minha resposta conforme necessário.

Melhor da sorte!

    
por 10.10.2018 / 22:58

Tags