Windows에서 wget 설치·사용법과 "wget: command not found" 문제 해결 가이드

개요
wget은 네트워크 상의 파일을 가져오는 커맨드라인 도구입니다. HTTP, HTTPS, FTP 프로토콜을 사용해 파일, 웹페이지, 사이트 전체(재귀 다운로드)를 로컬로 저장할 수 있습니다. 특히 서버 관리, 백업, 오프라인 아카이브, 자동화 스크립트에서 자주 사용됩니다.
한 줄 정의: wget은 서버에서 URL로 지정한 리소스를 가져와 로컬에 저장하는 비대화형(Non-GUI) 다운로드 도구입니다.
Important: 사이트 전체를 다운로드할 때는 서버 부하와 저작권, robots.txt 규칙을 항상 존중하세요. 과도한 요청은 서버 차단으로 이어질 수 있습니다.
이 문서에서 다루는 내용
- wget의 기본 개념과 주요 옵션
- Windows, macOS, WSL에서 설치하는 현실적인 방법들
- “wget: command not found” 오류의 원인과 해결법
- 자주 쓰는 명령 예제 모음(cheat sheet)
- 사이트 미러링, 속도 제한, User-Agent 설정 등 실전 사용법
- 실패하는 경우(동적 사이트, 인증, 방지기술)와 대안
- 안전·보안·개인정보 고려사항
- 역할별 체크리스트(개발자·운영·SEO 담당자)
wget이란 무엇이며 무엇을 할 수 있는가
wget은 원격 서버에서 파일을 다운로드하는 오픈소스 명령줄 도구입니다. 주로 다음 작업에 사용됩니다:
- 단일 파일 또는 여러 파일 다운로드
- 재귀(recursive) 다운로드로 사이트의 여러 하위 디렉터리 복제
- 링크 변환(convert-links)으로 로컬에서 동작하는 복제본 생성
- 속도 제한, 대기 시간 삽입, 사용자 에이전트 변경 등 요청 제어
간단한 예: 한 파일 다운로드
wget https://example.com/robots.txt
위 명령은 example.com의 robots.txt 파일을 현재 폴더로 가져옵니다.
설치: 어디에서 문제가 발생하는가
“wget: command not found” 오류는 다음 상황에서 발생합니다:
- wget이 시스템에 설치되지 않음
- 설치는 되었지만 실행 파일이 PATH에 없음(명령을 찾을 수 없음)
- 32/64비트 아키텍처 불일치 또는 실행 권한 문제
- 보안 소프트웨어가 차단
다음 섹션에서 Windows와 macOS, WSL 환경별로 설치 방법과 권장 방식들을 설명합니다.
Windows에 wget 설치하는 안전한 방법
Windows 환경에는 여러 방법이 있습니다. 관리자 권한으로 System32에 복사하는 고전적인 방법보다 패키지 관리자를 이용하는 방법을 권장합니다.
방법 1 — Chocolatey(권장, 관리자 권한 필요)
- 관리자 권한으로 PowerShell을 실행합니다.
- Chocolatey가 설치되어 있지 않다면 공식 설치 절차를 따릅니다(공식 사이트 참고).
- 다음을 실행:
choco install wget -y
설치 후 새 터미널을 열고 wget -V
로 버전을 확인합니다.
방법 2 — Scoop(로컬 사용자 설치, 관리자 불필요)
Scoop은 Windows에서 비관리자 환경으로 패키지를 설치할 때 유용합니다.
PowerShell(관리자 권한 불필요)에서:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
iwr -useb get.scoop.sh | iex
scoop install wget
방법 3 — 수동 설치(구식이지만 가능한 방법)
- Wget 바이너리(zip)를 공식 또는 신뢰 가능한 저장소에서 다운로드합니다.
- 압축을 풀고 실행 파일(wget.exe)을 적당한 폴더(예: C:\Tools\wget)로 옮깁니다.
- 시스템 환경변수 PATH에 해당 폴더를 추가합니다(시스템 또는 사용자 수준).
- 새 명령 프롬프트를 열고
wget -V
를 실행하여 확인합니다.
주의: C:\Windows\System32에 파일을 직접 복사하는 방법은 가능하지만 권장하지 않습니다. 잘못하면 시스템 파일 관리 및 보안에 문제가 생길 수 있습니다.
방법 4 — WSL(Windows Subsystem for Linux)
Linux용 wget을 그대로 사용하려면 WSL을 이용하세요. Ubuntu 등 배포판에서:
sudo apt update
sudo apt install wget
WSL은 POSIX 환경에서 동작하기 때문에 Linux 기반 스크립트와 함께 사용할 때 유리합니다.
검사: wget이 설치되었는지 확인
wget -V
또는
where wget
(Windows에서 해당 명령은 실행 파일의 경로를 출력합니다.)
macOS에 wget 설치하는 방법
macOS에서는 Homebrew가 표준적인 방법입니다. 최신 설치 방법:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew update
brew install wget
설치 후 wget --version
으로 확인합니다.
대안: macOS에서 MacPorts를 사용하는 방법도 있습니다.
wget 기본 구문 및 자주 쓰는 옵션
기본 구문:
wget [옵션]... [URL]...
주요 옵션 요약(cheat sheet):
- -O <파일명> : 다운로드한 파일을 지정한 이름으로 저장
- -P <디렉터리> : 저장할 출력 디렉터리 지정
- -r, –recursive : 재귀 다운로드(사이트 전체 복사)
- -l <숫자>, –level=<숫자> : 재귀 깊이 제한
- -k, –convert-links : 로컬에서 동작하도록 링크 변환
- -p, –page-requisites : 페이지가 제대로 동작하는 데 필요한 모든 자원(이미지, CSS 등) 포함
- -N : 원격의 파일이 로컬보다 새로우면 갱신
- -S : 서버 헤더 출력(날짜·시간 확인용)
- –user-agent=<문자열> : 요청에 사용할 User-Agent 지정
- –wait=<초> : 요청 사이 대기 시간 삽입
- –limit-rate=<속도> : 다운로드 속도 제한
- –no-parent : 상위 디렉터리로 올라가지 않음
- –domains=<도메인 목록> : 지정 도메인만 허용
- –span-hosts : 호스트를 넘나드는 리소스 허용
- -nc, –no-clobber : 기존 파일 덮어쓰지 않음
아래는 자주 쓰는 예제들입니다.
단일 파일 다운로드
wget https://example.com/robots.txt
특정 디렉터리에 다운로드
wget -P /경로/저장폴더 https://example.com/sitemap.xml
Windows 예 (경로에 공백이 있으면 따옴표 사용):
wget -P "C:\Users\MyUser\Downloads" https://example.com/sitemap.xml
다운로드한 파일명을 바꾸기
wget -O my-page.html https://example.com/file.html
User-Agent 정의
wget --user-agent="Mozilla/5.0 (compatible; MyBot/1.0)" https://example.com/file.html
Googlebot인 척 하기(주의: 윤리적·법적 문제를 일으킬 수 있으므로 주의)
wget --user-agent="Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com/path
Important: 특정 에이전트로 가장하는 것은 사이트 이용약관에 위배될 수 있으며, 법적 책임이 따를 수 있습니다.
robots.txt만 변경될 때만 다운로드
- 최초 다운로드 및 서버 날짜 기록 보기:
wget -S https://example.com/robots.txt
- 이후 최신본만 갱신:
wget -N https://example.com/robots.txt
페이지 내 링크 변환
로컬에서 페이지가 동작하도록 링크를 변경하려면:
wget --convert-links https://example.com/path
단일 페이지 로컬 복제(로컬에서 바로 열기)
wget -E -H -k -K -p --convert-links https://example.com/path
이 옵션들의 역할:
- -E: 확장자를 .html로 조정
- -H: 호스트 간 복사 허용
- -k: 링크 변환
- -K: 기존 파일 백업
- -p: 페이지에 필요한 리소스 포함
여러 URL 동시에 다운로드
URLs 목록을 파일로 만들어 처리:
urls.txt 내용 예시:
https://example.com/1
https://example.com/2
https://example.com/3
명령:
wget -i urls.txt
(원문에 -I로 표기되어 있으나, 파일 입력은 -i가 정확합니다.)
속도 제한과 요청 대기
과도한 크롤링은 서버에 피해를 줍니다. 책임감 있게 다음 옵션을 사용하십시오.
--wait=1 # 요청 사이 1초 대기
--limit-rate=10K # 초당 바이트 수로 속도 제한
예:
wget --wait=1 --limit-rate=10K -r https://example.com
사이트 전체 복제(주의)
재귀 모드로 사이트 전체를 복제하는 예:
wget --recursive --page-requisites --adjust-extension --span-hosts --wait=1 --limit-rate=10K --convert-links --restrict-file-names=windows --no-clobber --domains=example.com --no-parent https://example.com
옵션 해설(정리):
- –recursive: 링크를 따라 재귀적으로 다운로드
- –page-requisites: 페이지 동작에 필요한 모든 자원 포함
- –adjust-extension: 저장 파일 확장자 조정
- –span-hosts: 외부 호스트의 자원도 허용
- –wait=1: 요청 사이 1초 대기
- –limit-rate=10K: 다운로드 속도 제한(초당 바이트)
- –convert-links: 로컬에서 열리도록 링크 변환
- –restrict-file-names=windows: 윈도우 파일명 규칙에 맞춤
- –no-clobber: 이미 있는 파일 덮어쓰기 금지
- –domains=example.com: 도메인 제한
- –no-parent: 상위 디렉터리로 올라가지 않음
노트: 대규모 미러링은 서버 부하, 네트워크 요금, 저장공간 문제를 일으킵니다. 사전 허가를 받으세요.
언제 wget이 실패하는가 — 한계와 대안
- 동적 JavaScript 렌더링 페이지
- 이유: wget은 정적 HTML을 처리합니다. SPA(단일 페이지 애플리케이션) 같은 JavaScript로 렌더링되는 콘텐츠는 가져오지 못합니다.
- 대안: headless 브라우저(예: Puppeteer, Playwright) 또는 서버사이드 렌더링 API 사용.
- 인증이 필요한 영역
- 이유: 로그인 세션이나 쿠키, CSRF 토큰 등 복잡한 인증 흐름.
- 대안: curl로 세션 로그인 후 쿠키를 저장, 또는 브라우저 자동화로 인증 정보를 획득하고 재사용.
- CAPTCHA, 봇 방지, IP 차단
- 이유: 사이트가 비정상 트래픽을 감지하면 차단.
- 대안: 합법적 루트로 API 사용, 사이트 관리자와 협의, 요청 속도 감소, 프록시 및 회전 IP 사용은 정책 위반이 될 수 있음.
- 대용량 미디어 스트리밍 또는 스트리밍 프로토콜
- 이유: wget은 HTTP/FTP 기반 파일 다운로드에 최적화되어 있음.
- 대안: 전용 스트리밍 도구나 공식 API 사용.
비교: wget vs curl
- wget: 재귀 다운로드, 사이트 미러링, 파일 저장에 강함. 비대화형 다운로드에 적합.
- curl: 더 많은 프로토콜 지원(FTP, FTPS, SFTP, SCP 등), 요청 구성과 전송에 강하고 파이프라인에서 사용하기 편리. 단일 요청/응답 조작에 적합.
일반 권장: 파일을 단순히 가져오고 로컬에 저장하려면 wget이 직관적입니다. 복잡한 인증이나 세부 HTTP 제어가 필요하면 curl이 더 유연합니다.
보안·윤리·개인정보 고려사항
- robots.txt 준수: 크롤러로서 robots.txt를 존중하세요. 이는 법적 의무는 아니지만 윤리적 기준입니다.
- 요청 속도 제한: 서버에 부하를 주지 않도록 –wait, –limit-rate 사용.
- 사용자 에이전트 식별: 실제 봇이라면 명확히 식별 가능한 User-Agent를 사용하세요. 가장하는 것은 문제가 될 수 있습니다.
- 개인정보 처리: 개인 식별 정보(PII)를 수집하는 경우 관련 법규(예: GDPR)에 따라 적법한 근거와 보안 조치를 확보해야 합니다.
- 인증 및 비밀번호: 자동화 스크립트에 민감한 자격증명을 하드코딩하지 마세요. 환경 변수나 비밀 관리 서비스를 사용하세요.
역할 기반 체크리스트
개발자 체크리스트
- [ ] wget 설치 확인:
wget -V
실행 - [ ] PATH 문제 검증:
where wget
또는which wget
확인 - 스크립트에서 절대 경로 대신 환경 변수 사용
- 실패 시 로그/헤더(-S) 확인
시스템 관리자 체크리스트
- 서버 로그에서 크롤링 트래픽 감시
- robots.txt 정책 수립
- 요청 당속도와 동시 접속 수 제한
- 허용된 IP/블랙리스트 정책 설정
SEO/콘텐츠 담당자 체크리스트
- 사이트가 정상적으로 크롤링되는지 정기 점검
- robots.txt 및 sitemap.xml 최신 상태 유지
- User-Agent에 따른 처리(차단/허용) 문서화
실무용 미니 메서도롤로지: 안전한 사이트 복제 절차
- 목표 정의: 어떤 범위(도메인, 하위경로)를 복제할지 명확히 한다.
- 로컬 저장 공간과 대역폭 요구량을 추산한다.
- robots.txt 확인 및 사이트 운영자에게 사전 허가 요청(필요 시).
- 테스트: 제한된 깊이와 속도로 작은 샘플을 받아본다.
- 전체 실행 시 속도 제한(–wait, –limit-rate)과 도메인 제한(–domains) 적용.
- 작업 후 결과 무결성 검증 및 불필요한 반복 방지.
문제 해결 가이드(일반적인 시나리오)
증상: “wget: command not found”
조치:
- 설치 여부 확인:
where wget
(Windows) 또는which wget
(Linux/macOS) - PATH 확인: 실행 파일 위치가 PATH에 포함되어 있는지 확인
- 권한 문제: 설치 폴더에 실행 권한이 있는지 확인(Windows에서는 관리자 권한 필요할 수 있음)
- 패키지 관리자 사용: Chocolatey/ Scoop / Homebrew로 설치 후 확인
- 대체 도구: WSL 또는 curl 사용
증상: 다운로드가 부분적으로 실패하거나 링크가 깨짐
조치:
--page-requisites
와--convert-links
조합 사용--adjust-extension
로 확장자 보정- 외부 호스트 리소스가 필요한 경우
--span-hosts
허용
증상: 사이트가 JavaScript로 콘텐츠 렌더링
조치: headless 브라우저(Puppeteer, Playwright) 사용 또는 사이트에서 제공하는 API 탐색
실전 예제 모음(추가)
- 인증이 필요한 API에서 토큰으로 파일 다운로드(curl 권장):
curl -H "Authorization: Bearer TOKEN" -o output.json https://api.example.com/data
- wget과 cron을 조합해 정기적으로 robots.txt 업데이트 확인
0 * * * * /usr/bin/wget -N https://example.com/robots.txt -P /var/www/robots-backup
- Windows PowerShell 스크립트에서 wget(또는 curl) 호출
# PowerShell에서는 curl이 Invoke-WebRequest의 별칭일 수 있으므로 주의
Invoke-WebRequest -Uri "https://example.com/file.zip" -OutFile "C:\Temp\file.zip"
1라인 용어집
- Wget: 비대화형 파일 다운로드 도구
- cURL: HTTP 등 여러 프로토콜을 세밀히 제어할 수 있는 전송 도구
- User-Agent: 클라이언트(브라우저/봇)를 식별하는 문자열
- 재귀 다운로드: 링크를 따라 내려가며 다수의 파일을 가져오는 방식
- robots.txt: 크롤러에 접근 허용/비허용 규칙을 지시하는 텍스트 파일
자주 묻는 질문
왜 Windows에서 wget 명령을 찾을 수 없나요?
가장 흔한 이유는 wget이 설치되어 있지 않거나, 설치는 되었지만 실행 파일 위치가 PATH에 포함되지 않았기 때문입니다. 또 다른 원인은 패키지 설치가 올바르게 완료되지 않았거나 관리자 권한이 필요한 작업이 실패했을 수 있습니다.
curl이란 무엇인가요?
curl은 클라이언트 URL 도구로, HTTP(S)뿐 아니라 FTP, SFTP 등 다양한 프로토콜을 통해 데이터 전송과 요청 구성이 가능한 커맨드라인 도구입니다. 인증, 헤더 조작, 업로드/다운로드에 유연합니다.
wget과 curl 중 어느 것을 사용해야 하나요?
- 간단한 파일 다운로드와 사이트 미러링: wget 권장.
- 복잡한 HTTP 헤더 조작, 인증 흐름, 여러 프로토콜을 동시에 다뤄야 할 때: curl 권장.
요약
- wget은 비대화형 다운로드에 최적화된 도구입니다.
- Windows에서는 Chocolatey나 Scoop을 통한 설치를 권장합니다. 수동 설치 시 PATH 설정을 잊지 마세요.
- JavaScript 렌더링, 인증, 봇 차단 등 상황에서는 wget이 한계가 있습니다. 이때는 curl 또는 headless 브라우저를 고려하세요.
- 사이트 미러링 전에는 robots.txt와 서버 부하를 반드시 고려하세요.
요약된 핵심 포인트:
- wget 설치 확인:
wget -V
- PATH 문제:
where wget
또는which wget
- 안전한 크롤링: –wait와 –limit-rate 사용
감사합니다. 추가로 궁금한 사용 사례(예: 인증 처리, 프록시 설정, Windows 스케줄 작업과의 통합 등)가 있으면 알려주시면 실습 예제와 스크립트를 더 드리겠습니다.