사이트를 미러링하려고 하는데 서버가 gzip으로 압축된 페이지에만 응답하므로 wget이 반복되지 않습니다. 검색해 보니 wget에 gzip 지원을 추가하는 패치에 대한 참조가 있지만 오래된 것 같습니다. 이를 수행할 수 있는 방법이 있습니까? 그렇지 않다면 nginx를 통한 역방향 프록시를 고려하고 있습니다.
답변1
4가지 방법이 있습니다:
wget
그런gunzip
다음 HTML에서 다시 처리합니다. 완료될 때까지 반복합니다.wget -m http://example.org/page.html find . -name \*gz -exec gzip -d {} \; find . -name \*html -exec wget -M -F {} \;</code></pre>
속도는 느리지만 작동할 것입니다.
Privoxy를 설치하고 요청된 페이지의 압축을 풀도록 구성합니다.
+ 압축 방지
웹사이트의 데이터 압축을 방지합니다. 일부 사이트에서는 이 작업을 수행합니다. 이는 +filter 및 +gif-deanimate가 압축된 데이터에서 작동하지 않기 때문에 zlib 지원 없이 빌드할 때 Privoxy에 문제가 됩니다. 그러나 이러한 사이트에 대한 연결 속도가 느려집니다.
Privoxy 또는 기타 프록시는 압축된 페이지를 가져와 압축되지 않은 사본을 클라이언트 Google에 전달할 수도 있습니다.
wget
요청 콘텐츠의 "Accept-Encoding: gzip" 헤더를 보내지 않습니다 .gzip
왜 이런 일이 발생하는지 확인하세요. 어쩌면 그것을 추가하는 에이전트가 있습니까? Privoxy를 사용하여 이 헤더를 제거할 수도 있습니다.
답변2
wget -m -q --compression=auto http://example.com
~에서GNU wget
매뉴얼:
--compression=type
사용할 압축 유형을 선택합니다. 유효한 값은
auto
,gzip
및 입니다none
.또는 가 지정되면
auto
서버는 파일을 압축하기 위해 압축 형식을 사용하도록 요청받습니다. 서버가 파일을 압축하고 적절하게 설정된 헤더 필드로 응답하면 파일이 자동으로 압축 해제됩니다.gzip
wget
gzip
Content-Encoding
none
지정된 경우wget
서버는 파일 압축을 요청하지 않으며 모든 서버 응답은 압축 해제되지 않습니다. 이것이 기본 설정입니다.압축 지원은 현재 실험적입니다. 열려 있는 경우 "버그가 있으면 신고해 주세요.[이메일 보호됨]".
답변3
답변이 늦었지만 웹 참조용입니다.
wget -O - $URL | zcat | wget -B $URL -i - -F -c -T 45 -k -r --page-requisites
문서 캐싱은 "잘 알려져 있습니다". 시간 초과/재시도 옵션(예: -c 및 -T 사용)은 무선 네트워크에서 간헐적인 "링크 손실"에 유용할 수 있습니다. 물론 모든 옵션은 선택사항입니다.