Wget
wget記憶體不足錯誤殺死程序
我想從我的 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 返回此錯誤:
原文網址: http: //oi40.tinypic.com/2ch9itt.jpg
這會殺死程序,因為系統“記憶體不足”。該系統是一個 Debian Wheezy 虛擬機,託管在 Windows 7 上。我嘗試將 RAM 增加到 1024MB 而不是實際的 128MB,但問題仍然存在。
關於如何解決此問題或實現此目標的替代方法的任何建議?
似乎
wget
循環會導致記憶體溢出。自然的第一個建議是再次將雲實例的記憶體從 1Gb 增加到 2Gb。這解決了最近的一個類似問題。
如果這不可能或不能解決問題,則第二種解決方案是
wget
在 2 個步驟內執行:
- 檢索文件列表。正如我在您的螢幕截圖中看到的,文件位於目錄中
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