O wget começa o download e para "não pode gravar em"

13

Estou usando o wget para espelhar alguns arquivos de um servidor para outro. Estou usando o seguinte comando:

wget -x -N -i http://domain.com/filelist.txt

-x = Porque eu quero manter a estrutura de diretórios

-N = Carimbo de data e hora para obter apenas novos arquivos

-i = Para baixar uma lista de arquivos de um arquivo externo, um em cada linha.

Arquivos pequenos, como um que estou testando, têm um grande download de 326kb.

Mas outro de 5gb baixa apenas 203mb e depois para (é sempre 203mb mais ou menos alguns kilobytes)

A mensagem de erro mostrada é:

Não é possível gravar em âpath / to / file.zipâ

(Não sei ao certo por que existem caracteres estranhos antes e depois. Estou usando o Putty no Windows e isso pode ou não ter algo a ver com isso, por isso deixei-os dentro. Presumo que não.).

A resposta completa é a seguinte: (Substituí caminhos, ip e nome de domínio)

--2012-08-31 12: 41: 19-- http://domain.com/filelist.txt Resolvendo domínio.com ... MY_IP Conectando ao domínio.com | MY_IP |: 80 ... conectado. Solicitação HTTP enviada, aguardando resposta ... 200 OK Comprimento: 161 [texto / sem formatação] Arquivo do servidor não mais recente que o arquivo local âdomínio.com / filelist.txt ”

--2012-08-31 12: 41: 19-- http://domain.com/path/to/file.zip Conectando ao domain.com | MY_IP |: 80 ... conectado. Solicitação HTTP enviada, aguardando resposta ... 200 OK Comprimento: 5502192869 (5.1G) [application / zip] Os tamanhos não correspondem (local 213004288) - em recuperação.

--2012-08-31 12: 41: 19-- http://domain.com/path/to/file.zip Conectando ao domain.com | MY_IP |: 80 ... conectado. Solicitação HTTP enviada, aguardando resposta ... 200 OK Comprimento: 5502192869 (5.1G) [application / zip] Salvando em: âdomínio.com / caminho / para / arquivo.zipâ

3% [====>
] 213.003.412 8,74M / s em 24s

Não é possível gravar em âdomain.com / path / to / file.zipâ

Parece não fazer diferença se o diretório do caminho já existe ou é criado em tempo real.

Alguém tem alguma idéia de por que parar e como posso corrigi-lo?

Qualquer ajuda com ser mais apreciado.

Edição: Eu também tentei apenas fazer um wget, sem entrada de arquivo e renomear o arquivo. Desta vez, ele baixa um pouco mais de 3 GB e depois dá o mesmo erro de gravação.

wget -x -N http://domain.com/path/to/file.zip -O files/bigfile.zip
John Mellor
fonte
Você tem algum personagem especial no seu caminho?
JMeterX
Funciona como esperado se você digitar "cd / tmp &&" antes do comando?
Seu disco está cheio?
Jenny D
O disco definitivamente não está cheio e não há caracteres especiais. Embora o comprimento do caminho seja de 87 caracteres, alguns usuários do Google apresentaram alguns problemas com nomes longos (o nome do arquivo tem apenas 29 caracteres). Ele falha da mesma maneira no tmp.
John Mellor
@FreezeDriedPop Desde o nome do arquivo é relativamente longo, você poderia mudar usando a -Oopção de modowget -O test.zip http://link
JMeterX

Respostas:

7

Você receberá esse erro se estiver sem espaço em disco. execute df e você verá se o diretório para o qual está gravando está 100%

Sol
fonte
4

É um problema com URL longo. Eu também enfrentei. Então, usei o bit.ly e reduzi o URL. Funciona como um encanto!

Namchester
fonte
Você tem certeza? Parece improvável que o download seja iniciado e interrompido em algum momento quando o problema estiver relacionado ao URL, que é usado apenas no início da transação.
Felix Frank
Sim. Eu tive o mesmo problema. Tente.
Namchester
Eu acho que o problema é com o linux não é capaz de reconhecer o URL longo.
Namchester
Suponho que você quer dizer a concha? Porque o kernel definitivamente é inocente dessa falha. Mesmo para o shell, não é provável, mas, se fosse o caso, novamente, o download nem poderia ser iniciado - o shell cometeria um erro antes mesmo de iniciar o wgetprocesso em potencial .
Felix Frank
1
Para mim foi string query na url -wget http://dltr.org/skin/frontend/lowes/default/css/custom.css?001
Damodar Bashyal
1

Acabei de adicionar um -ao tarcomando após o pipe após o wget

eu tinha

wget https://example.com/path/to/file.tar.gz -O -|tar -xzf -C /path/to/file

então mudei para

wget https://example.com/path/to/file.tar.gz -O - | tar -xzvf - -C /path/to/file
shadi
fonte
Não esqueça o `-` também para o alcatrão :).
Shital Shah 20/11/19
0

Se ele começar a salvar um arquivo grande e gravar 203 MB, eu suspeitaria que você tenha um sistema de arquivos completo no lado receptor ou a conexão de rede esteja atingindo o tempo limite.

Você pode usar df -h no servidor de recebimento para verificar se o sistema de arquivos está cheio

Confira esta resposta para problemas de tempo limite com o wget:

/programming/2291524/does-wget-timeout

Além disso, tente novamente a transferência que falhou e omita a opção -N timestamp

Além disso, execute ulimit -a para verificar se há um limite de tamanho de arquivo no servidor de recebimento

DisgruntledUser
fonte
Não sou especialista, mas acho que está executando o CentOS 6. Além disso, não sei como verificar a representação dos caracteres. Embora comece a baixar e baixar outros arquivos menores, não acho que isso pareça o problema.
precisa
Os arquivos que ele consegue baixar possuem QUALQUER caractere engraçado em seus nomes?
usar o seguinte
Não, nenhum caractere estranho, a menos que um ponto seja um caractere estranho, por exemplo, "megapack_4.11.zip". Mas, novamente, eu tentei apenas com o nome "bigfile.zip" e o mesmo problema ocorre.
precisa
Talvez seja apenas massa de vidraceiro, que é definida como uma representação carvão animal diferente do que UTF-8
DisgruntledUser
Sim, eu realmente não acho que esse seja o problema, eu apenas mencionei quando estava copiando e colando de Putty. O verdadeiro problema para o qual não é possível gravar.
precisa
0

Eu estava fazendo algo parecido com:

wget -x -N -i http://domain.com/filelist.txt

Eu estava recebendo:

--2016-12-09 07:44:23--  https://www.example.com/dir/details?abc=123&def=456
Resolving www.example.com (www.example.com)... 1.2.3.4
Connecting to www.example.com (www.example.com)|1.2.3.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
details?abc=123&def=456: No such file or directory

Cannot write to ‘details?abc=123&def=456’ (Success).

No meu arquivo filelist.txt equivalente, eu tinha um URL como:

https://www.example.com/dir/details?abc=123&def=456

Então, para depurar, tentei criar o mesmo arquivo que o wget estava tentando criar:

touch "details?abc=123&def=456"
touch: cannot touch ‘details?abc=123&def=456’: No such file or directory

Viola! Parece que esse ?foi o problema, mas a boa prática seria remover todos os caracteres especiais dos nomes dos arquivos, imagine o que a &ação fará se não for escapada.

nikc
fonte