Finalmente descobri e foi uma questão espacial. É um problema com o 1and1 Cloud Server, mais sobre isso aqui: link
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 = Registro de data e hora para obter somente novos arquivos
-i = Para baixar uma lista de arquivos de um arquivo externo, um em cada linha.
Arquivos pequenos, como um que estou testando, são ótimos downloads de 326 kb.
Mas outro que é 5gb só baixa 203mb e depois pára (sempre é de 203mb ou mais kilobytes)
A mensagem de erro mostrada é:
Cannot write to âpath/to/file.zipâ
(Eu não tenho certeza porque existem os caracteres estranhos antes e depois. Eu estou usando o Putty no Windows e isso pode ou não ter algo a ver com isso, então eu os deixei entrar. Eu presumo que não.) .
A resposta completa é a seguinte: (eu substituí caminhos, ip e nome de domínio)
--2012-08-31 12:41:19-- http://domain.com/filelist.txt Resolving domain.com... MY_IP Connecting to domain.com|MY_IP|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 161 [text/plain] Server file no newer than local file âdomain.com/filelist.txtâ
--2012-08-31 12:41:19-- http://domain.com/path/to/file.zip Connecting to domain.com|MY_IP|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 5502192869 (5.1G) [application/zip] The sizes do not match (local 213004288) -- retrieving.
--2012-08-31 12:41:19-- http://domain.com/path/to/file.zip Connecting to domain.com|MY_IP|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 5502192869 (5.1G) [application/zip] Saving to: âdomain.com/path/to/file.zipâ
3% [====>
] 213,003,412 8.74M/s in 24sCannot write to âdomain.com/path/to/file.zipâ
Não parece fazer diferença se o diretório do caminho já existir ou for criado na hora.
Alguém tem alguma ideia de por que parar e como posso corrigi-lo?
Qualquer ajuda para ser mais apreciada.
EDIT: Eu também tentei apenas fazer um wget, sem entrada de arquivo e renomear o arquivo. Desta vez, ele baixa um pouco mais de 3GB e, em seguida, dá o mesmo não pode escrever erro.
wget -x -N http://domain.com/path/to/file.zip -O files/bigfile.zip
Finalmente descobri e foi uma questão espacial. É um problema com o 1and1 Cloud Server, mais sobre isso aqui: link
Você receberá este erro se estiver sem espaço em disco. execute df e você verá se o diretório em que está gravando está em 100%
É um problema com o URL longo. Eu também enfrentei isso. Então, eu usei bit.ly e encurtou o URL. Funciona como um encanto!
Se começar a salvar um arquivo grande e gravar 203 MB dele, suspeito que você tenha um sistema de arquivos completo no terminal de recebimento ou a conexão de rede esteja expirando.
Você pode usar df -h no servidor de recebimento para ver se o sistema de arquivos está cheio
Confira esta resposta para problemas de tempo limite com o wget:
Além disso, tente novamente a transferência que falhou e omita a opção -N timestamp
Além disso, execute ulimit -a para ver se há um limite de tamanho de arquivo no servidor de recebimento
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 o ?
foi o problema, mas a boa prática seria remover todos os caracteres especiais dos nomes dos arquivos, imagine o que o &
fará se não tiver escapado.
Acabei de adicionar um -
ao comando tar
após o pipe após o wget
eu tive
wget https://example.com/path/to/file -O -|tar -xzf -C /path/to/file
depois alterou para
wget https://example.com/path/to/file -O - | tar -xzvf - -C /path/to/file
Tags wget linux file-permissions