Wget

wget記憶體不足錯誤殺死程序

  • December 9, 2020

我想從我的 carddav 伺服器 (ownCloud) 備份我的所有 .vcf 文件。該腳本非常簡單,如下所示:

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

.vcf 文件總數約為 400 個,下載其中約 70 個後,wget 返回此錯誤:

   ss 錯誤

原文網址: http: //oi40.tinypic.com/2ch9itt.jpg

這會殺死程序,因為系統“記憶體不足”。該系統是一個 Debian Wheezy 虛擬機,託管在 Windows 7 上。我嘗試將 RAM 增加到 1024MB 而不是實際的 128MB,但問題仍然存在。

關於如何解決此問題或實現此目標的替代方法的任何建議?

似乎wget循環會導致記憶體溢出

自然的第一個建議是再次將雲實例的記憶體從 1Gb 增加到 2Gb。這解決了最近的一個類似問題。

如果這不可能或不能解決問題,則第二種解決方案是wget在 2 個步驟內執行:

  1. 檢索文件列表。正如我在您的螢幕截圖中看到的,文件位於目錄中cloud.some_domain.com/remote.php/carddav/addressbooks/your_name/

因此,執行wget以獲取目錄索引:

wget https://cloud.some_domain.com/remote.php/carddav/addressbooks/your_name/

這將為您提供一個index.html文件。 2. 現在您可以解析它以檢索要下載的文件名:

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

引用自:https://unix.stackexchange.com/questions/108208