檢查網站伺服器上託管的文件頭的 MD5

檢查網站伺服器上託管的文件頭的 MD5

我正在編寫一個 bash 腳本來使用 cURL 定期下載安裝檔。問題如下,該檔案大約 110 MB,並且始終具有相同的檔案名稱。

我可以下載該文件,檢查其哈希值(md5、sha1)並將其與先前下載的文件進行比較:

  • 如果哈希值相等,則檔案是相同的並且尚未更新:在這種情況下,我無緣無故地下載了它。
  • 如果雜湊值不同,則網頁伺服器上的檔案是新版本:在這種情況下,我使用此檔案並更新到新版本。

我想每半小時運行一次這個腳本,免費下載 110MB(相同的檔案版本)讓我很煩惱。有沒有辦法在命令列中使用curl下載前500KB?

我目前的解決方法是比較 HTTP 標頭中的檔案大小,但我仍然想得到上述問題的答案,並知道這是否可行。非常感謝。

捲曲-sI'http://domain.tld/uri/updater/getLatest.etcenter?c=var&asi=allright' -H '主機:domain.tld' -H '用戶代理:Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0),如 Gecko' -H '接受:text/html,application/xhtml+xml ,應用程式/xml;q=0.9,/;q=0.8' -H '接受語言:en-US,en;q=0.5' -H '接受編碼:gzip、deflate、br' -H 'DNT: 1' -H '連線:保持活動狀態' | grep '內容長度:'

答案1

您可以信任客戶端和伺服器上檔案的修改日期嗎?如果是這樣,您可以使用 HTTP 的“條件 GET”/“If-Modified-Since”功能和curls-z選項。根本不需要下載任何東西。這是 HTTP 協定的內建功能,從一開始就被廣泛使用。

如果伺服器上檔案的修改日期不比您上次下載的檔案的修改日期新,則無需下載任何內容。

對於您的bash腳本,請考慮使用stat(1)查找本地文件的 mod 時間,以便您可以將該資訊輸入到curl -z ….

相關內容