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

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%


4

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


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

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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.