Saia do erro de memória mata processo

5

Eu queria fazer backup de todos os meus arquivos .vcf do meu servidor carddav (ownCloud). O script é muito simples e é o seguinte:

$ wget -Avcf -r -np -l0 --no-check-certificate -e robots=off --user=user \
    --password='password' https://cloud.domain.com/foo/carddav

O número total de arquivos .vcf é de aproximadamente 400, depois de baixar cerca de 70 deles, wget retorna este erro:

URLoriginal: link

Que mata o processo porque o sistema está "sem memória". O sistema é uma máquina virtual Debian Wheezy, hospedada no Windows 7. Eu tentei aumentar a RAM para 1024MB em vez dos 128MB atuais, mas o problema ainda existe.

Alguma sugestão sobre como resolver isso ou maneiras alternativas de realizar isso?

    
por giovi321 07.01.2014 / 14:54

1 resposta

3

Parece que wget loops causa o excesso de memória .
A primeira sugestão natural é aumentar novamente a memória da sua instância de nuvem de 1 GB para 2 GB. Isso resolveu um problema semelhante recentemente.

Se isso não for possível ou não resolver o problema, a segunda solução é executar wget em 2 etapas:

  1. Recuperar lista de arquivos. Como eu vejo na sua captura de tela, os arquivos estão no diretório cloud.some_domain.com/remote.php/carddav/addressbooks/your_name/ .
    Portanto, execute wget para obter o índice do diretório:
    wget https://cloud.some_domain.com/remote.php/carddav/addressbooks/your_name/
    Isso fornecerá um arquivo index.html .

  2. Agora você pode analisá-lo para recuperar os nomes dos arquivos a serem baixados:

    grep ".vcf" index.html | awk -F"href=" '{print $2}' | awk -F\" '{print $2}' > ALL_VCF_FILES.lst
    for elt in 'cat ALL_VCF_FILES.lst'
    do
    wget https://cloud.some_domain.com/remote.php/carddav/addressbooks/your_name/$elt
    done
    rm ALL_VCF_FILES.lst index.html
    
por 07.01.2014 / 16:59