2011-01-22 80 views
9

我需要在我的Linux服務器上存檔完整的頁面,包括任何鏈接的圖像等。尋找最佳解決方案。有沒有辦法保存所有資產,然後重新鏈接它們以在同一目錄中工作?在Linux服務器上保存完整網頁的最佳方法是什麼?

我想過使用捲曲,但我不確定如何做到這一切。另外,我可能需要PHP-DOM嗎?

有沒有辦法在服務器上使用firefox,並在加載地址或類似地址後複製臨時文件?

任何和所有的輸入歡迎。

編輯:

它好像wget的是「不」去上班的文件需要渲染。我已經在服務器上安裝了Firefox,有沒有辦法在Firefox中加載url,然後抓取臨時文件並清除臨時文件?

+0

所有內容都是靜態的,還是存在動態內容(PHP,JSP等)? – thkala 2011-01-22 17:46:01

+0

這是客戶端Web應用程序的一部分,因此可能有任何內容。最好甚至使用javascript或java或類似的方式將當前的瀏覽器狀態發送到服務器,然後執行其他所需的操作。 – Tomas 2011-01-22 17:48:59

+1

[獲取瀏覽器呈現的html + javascript](https://stackoverflow.com/q/18720218) – 2014-01-10 19:32:33

回答

12

wget能做到這一點,例如:

wget -r http://example.com/ 

這將反映整個example.com的網站。

一些有趣的選項是:

-Dexample.com:不跟隨其他域的鏈接
--html-extension:重命名頁文本/ html內容類型爲.html

手冊:http://www.gnu.org/software/wget/manual/

2
wget -r http://yoursite.com 

應該足夠並抓取圖像/媒體。有很多選項可供您使用。

注意:我相信wget也沒有任何其他程序支持下載通過CSS指定的圖像 - 因此您可能需要手動執行此操作。

這裏可能是一些有用的參數:http://www.linuxjournal.com/content/downloading-entire-web-site-wget

5

如果在網頁中所有的內容是靜態的,你能解決這個問題的東西,如wget

$ wget -r -l 10 -p http://my.web.page.com/ 

或一些變體。

由於您也有動態頁面,所以通常無法使用wget或任何簡單的HTTP客戶端存檔此類網頁。合適的存檔需要包含後端數據庫和任何服務器端腳本的內容。這意味着正確執行此操作的唯一方法是複製支持服務器端文件。至少包括HTTP服務器文檔根目錄和任何數據庫文件。

編輯:

作爲變通,你可以修改你的網頁上,這樣合適priviledged用戶可以下載所有的服務器端文件,以及爲後盾數據庫的文本模式轉儲(如一個SQL轉儲)。您應該謹慎對待,以避免通過此存檔系統打開任何安全漏洞。

如果您使用的是虛擬主機提供商,它們中的大多數提供某種允許備份整個網站的Web界面。如果您使用的是實際的服務器,則可以安裝大量的備份解決方案,包括針對託管站點的一些基於Web的備份解決方案。

4

使用以下命令:

wget -E -k -p http://yoursite.com 

使用-E調整擴展。使用-k轉換鏈接以從存儲裝載頁面。使用-p下載頁面內的所有對象。

請注意,此命令不會下載指定頁面中超鏈接的其他頁面。這意味着該命令僅下載正確加載指定頁面所需的對象。

相關問題