
다음 명령을 사용하여 사이트를 다운로드하려고 합니다.
wget -r -l 0 -p -k -m -e robots=off --restrict-file-names=nocontrol,unix http://example.com
예를 들어 링크를 찾으면 http://example.com/direction
디스크에 파일이 생성됩니다../example.com/direction
그런 다음 예를 들어 '방향'에서 다른 파일(링크)을 찾습니다.http://example.com/direction/11
그리고 일부 HTML로 wget
이전 파일을 다시 작성 ./example.com/direction
하고 이를 디렉터리로 변환합니다. 그리고 ./example.com/direction/11
거기에 새 파일을 작성하십시오.
내부에서 새 파일을 찾으면 /direction/11
다시 작성하여 11
디렉터리로 변환합니다.
그래서 디렉토리 색인 파일을 모두 잃어버린 것 같습니다.
wget 자체에 문제에 대한 해결책이 있습니까?
답변1
모든 경우에 작동하지 않을 수도 있지만 다소 예상치 못한 태그를 사용하여 이 문제를 해결할 수 있었습니다.
wget 1.17.1 매뉴얼에서:
‘-E’
‘--adjust-extension’
‘application/xhtml+xml’
또는 유형의 파일을‘text/html’
다운로드하고 URL이 regexp로 끝나지 않는 경우 이 옵션을 사용하면 로컬 파일 이름에‘\.[Hh][Tt][Mm][Ll]?’
접미사가 추가됩니다 .‘.html’
따라서 귀하의 경우 wget이 링크를 찾으면 http://example.com/direction
페이지가 html 형식인지 확인합니다. 그렇다면 로컬 디스크에 /example.com/direction.html
. 그런 다음 을 발견하면 http://example.com/direction/11
디스크에 로 저장하므로 /example.com/direction/11
첫 번째 파일을 덮어쓰지 않습니다. 실제 디렉토리 구조가 이라고 가정하면 /example.com/direction/index.html
원격 디렉토리 구조와 정확히 일치하지는 않지만 적어도 파일을 잘못 덮어쓰지는 않습니다.
답변2
글쎄, Wget만을 사용하여 이 문제를 해결하는 것은 거의 불가능합니다. 먼저 문제를 설명해 드리겠습니다.
첫 번째 Wget은 http://site.com/direction
. Wget이 이 경로에 대한 요청을 보내면 서버는 http://site/com/example/index.html
. 그러나 이 시점에서 Wget은 전송되는 데이터가 example/index.html 경로에 해당하는지 인식하지 못합니다. 이제 Wget이 다른 파일을 찾으면 http://site.com/example/11
동일한 일이 다시 발생합니다. 그러나 먼저 example/ 디렉토리를 생성해야 하며 이를 위해 기존 파일을 무조건 삭제합니다. IMO, Wget은 파일을 디렉터리로 바꾸는지 감지하고 파일을 인덱스 파일로 저장해야 합니다. 하지만, 지금은 그렇지 않습니다.