나는 우연히 우연히 발견했다이 웹사이트이에 대한 언급은 없습니다.
그렇다면 gzip으로 압축된 버전을 받아 전체 웹사이트를 다운로드할 때 올바른 명령은 무엇입니까?
이 명령을 테스트했지만 wget이 실제로 gzip 버전을 가져오는지는 알 수 없습니다.
wget --header="accept-encoding: gzip" -m -Dlinux.about.com -r -q -R gif,png,jpg,jpeg,GIF,PNG,JPG,JPEG,js,rss,xml,feed,.tar.gz,.zip,rar,.rar,.php,.txt -t 1 http://linux.about.com/
답변1
gzip으로 압축된 콘텐츠를 요청하는 경우(올바른 Accept-encoding: gzip 헤더 사용) wget이 콘텐츠를 읽을 수 없다는 것을 이해합니다. 따라서 클릭한 첫 번째 페이지에 대해 디스크에 하나의 gzip 파일만 남고 다른 것은 없습니다.
즉, wget을 사용하여 gzip으로 압축된 콘텐츠를 요청하고 동시에 전체 사이트를 반복할 수 없습니다.
이것을 지원하는 wget용 패치가 있다고 생각하지만 기본 배포판에는 없습니다.
-S 플래그를 포함하면 웹 서버가 올바른 콘텐츠 유형으로 응답하는지 여부를 알 수 있습니다. 예를 들어,
wget -S --header="accept-encoding: gzip" wordpress.com
--2011-06-17 16:06:46-- http://wordpress.com/
Resolving wordpress.com (wordpress.com)... 72.233.104.124, 74.200.247.60, 76.74.254.126
Connecting to wordpress.com (wordpress.com)|72.233.104.124|:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 17 Jun 2011 15:06:47 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Vary: Accept-Encoding
Last-Modified: Fri, 17 Jun 2011 15:04:57 +0000
Cache-Control: max-age=190, must-revalidate
Vary: Cookie
X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.
X-Pingback: http://wordpress.com/xmlrpc.php
Link: <http://wp.me/1>; rel=shortlink
X-nananana: Batcache
Content-Encoding: gzip
Length: unspecified [text/html]
콘텐츠 인코딩에는 gzip이 명시적으로 명시되어 있지만 linux.about.com(현재)의 경우
wget -S --header="accept-encoding: gzip" linux.about.com
--2011-06-17 16:12:55-- http://linux.about.com/
Resolving linux.about.com (linux.about.com)... 207.241.148.80
Connecting to linux.about.com (linux.about.com)|207.241.148.80|:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Fri, 17 Jun 2011 15:12:56 GMT
Server: Apache
Set-Cookie: TMog=B6HFCs2H20kA1I4N; domain=.about.com; path=/; expires=Sat, 22-Sep-12 14:19:35 GMT
Set-Cookie: Mint=B6HFCs2H20kA1I4N; domain=.about.com; path=/
Set-Cookie: zBT=1; domain=.about.com; path=/
Vary: *
PRAGMA: no-cache
P3P: CP="IDC DSP COR DEVa TAIa OUR BUS UNI"
Cache-Control: max-age=-3600
Expires: Fri, 17 Jun 2011 14:12:56 GMT
Connection: close
Content-Type: text/html
Length: unspecified [text/html]
텍스트/html을 반환합니다.
일부 오래된 브라우저에서는 여전히 gzip 인코딩 콘텐츠에 문제가 있기 때문에 많은 웹사이트에서는 브라우저 인식만을 기반으로 이를 활성화합니다. 그들은 종종 기본적으로 wget을 끄고 브라우저가 이를 지원할 수 있다는 것을 알고 있는 경우에만 켜며 일반적으로 해당 목록에 wget을 포함하지 않습니다. 이는 웹사이트가 귀하의 브라우저에 gzip으로 압축된 콘텐츠를 반환하는 것처럼 보이더라도 wget이 결코 gzip으로 압축된 콘텐츠를 반환하지 않는다는 것을 알 수 있다는 것을 의미합니다.
답변2
HTML 페이지를 가져와 압축하거나 파일을 가져와 압축하는 간단한 명령입니다.
$ wget -qO - <url> | gzip -c > file_name.gz
이 옵션에 대한 추가 정보. 맨 명령을 사용하십시오.
답변3
mikeserv 등에 따르면 bash(버전 4.3 경)에 대한 위의 응답에서 개발자는 LINENO를 유지하는 방법에 대한 IEEE 사양을 채택하여 EXIT 신호의 매개변수가 평가될 때 값이 항상 1로 설정되었습니다. (실제로 이러한 실행 컨텍스트에서는 현재 라인이자 첫 번째 라인입니다.)
몇 가지 해결 방법이 나열되었습니다. 다른 것에 비해 매우 간단하다고 생각하므로 여기에서 이 문제에 대한 개념 증명을 제공하겠습니다.
#!/bin/bash
trap 'catch EXIT $? $debug_line_old' EXIT
trap 'debug_line_old=$debug_line;debug_line=$LINENO' DEBUG # note: debug is invoked before line gets executed!
catch() {
echo "event=$1, rc=$2, line=$3, file=$0"
}
exit 1
결과를 실행하면 다음이 표시됩니다.
event=EXIT, rc=1, line=7, file=./trap_exit_get_lineno.bash
그런데 - 어떤 종류의 트랩 이벤트도 한 줄로 나누지 않을 때 유용합니다. 별도의 신호에 대해 별도의 줄을 유지하면 코딩에 많은 도움이 됩니다. 둘째, DEBUG Trap은 다른 것을 호출하는 능력이 매우 제한되어 있는 것 같습니다.