CodeGym /행동 /Docker SELF /`curl`과 `wget`을 사용한 파일 다운로드

`curl`과 `wget`을 사용한 파일 다운로드

Docker SELF
레벨 8 , 레슨 4
사용 가능

curlwget을 사용한 파일 다운로드

1. curl과의 첫 만남

인터뷰에서 누군가 당신에게 터미널을 통해 인터넷에서 파일을 다운로드하라고 했을 때, 순간적으로 멍해져서 그 방법을 잊어버린 적 있니? 오늘 우리는 curlwget을 사용하는 방법을 배울 거야. 이 도구들은 네트워크 데이터를 다루는 데 아주 유용한 친구가 될 거야.

이 유틸리티들은 웹 페이지를 다운로드하거나, 파일을 다운로드하고, HTTP 요청을 보내고, API 작업을 처리하며, 심지어 자동화 스크립트를 실행할 수 있어. 그 기능, 장점, 일반적인 사용 시나리오를 알아보자.

curl은 네트워크 프로토콜을 통해 데이터를 전송하기 위한 명령줄 도구야. curl의 가장 큰 장점은 유연성인데, 20개 이상의 프로토콜(HTTP, HTTPS, FTP, SCP, SMTP 등)을 지원해. 개발자들에 따르면, 인터넷 작업을 위한 "스위스 군용 칼" 같은 도구야.

curl의 기본 문법

curl [옵션] URL

간단히 말해서, curl 명령어를 입력하고 필요한 주소를 지정하면 결과를 확인할 수 있어. 어떻게 작동하는지 알아보자.

웹 페이지 다운로드

예를 들어, Google 메인 페이지를 다운로드하고 싶다고 해보자. 이렇게 하면 돼:

curl http://www.google.com

화면에 페이지의 HTML 코드가 나타나게 될 거야. 사이트의 구조를 조사하거나 관련 작업을 자동화하고 싶을 때 꽤 유용해.

내용을 파일에 저장하기

이 모든 텍스트 흐름이 방해가 된다면, 결과를 파일에 저장할 수도 있어:

curl -o google.html http://www.google.com

-o (output) 플래그는 curl에게 출력을 파일로 리디렉션하라고 말해. 이제 페이지의 HTML 코드는 google.html에 저장돼 있어. 농담처럼 친구에게 파일을 주고 "인터넷 전체를 다운로드했다"고 말해봐.

파일 다운로드

인터넷에서 파일(.zip 같은)을 다운로드해야 한다고 상상해봐. curl이 이 작업을 완벽하게 처리해:

curl -O http://example.com/file.zip

-o와 달리 -O 플래그는 파일을 URL에서 지정된 원래 이름으로 저장해. 하나의 소스에서 여러 파일을 다운로드할 때 유용해.

HTTP 인증

가끔씩 파일이나 API 리소스에 로그인과 비밀번호로 보호되는 경우가 있어. 그럴 때는 -u 플래그와 함께 curl을 사용하면 돼:

curl -u username:password http://example.com/private-data

특히 GitHub나 Docker Registry 같은 비공개 API를 다룰 때 유용해.

API를 통한 다운로드

curl의 가장 멋진 기능 중 하나는 API 작업이야. 서버에 요청을 보내고 JSON 형식의 데이터를 반환한다고 가정해봐:

curl -X GET "https://api.exchangerate-api.com/v4/latest/USD"

여기서 -X 플래그는 HTTP 요청 메소드(GET, POST, DELETE 등)를 지정해. 외부 서비스와의 통합을 자동화할 때 정말 유용해.


2. wget란?

curl이 스위스 아미 나이프라면, wget은 불도저야. 주된 작업은 파일 다운로드지. curl과의 가장 큰 차이점은 wget이 대용량 파일의 신뢰성 있는 다운로드를 위해 설계되었고, 다운로드 재개를 지원한다는 거야. 이건 특히 인터넷 연결이 불안정할 때 편리해.

wget 기본 구문

wget [옵션] URL

파일 간단히 다운로드하기

wget http://example.com/file.zip

이 명령어는 파일을 다운로드하고 현재 디렉토리에 원래 이름으로 저장할 거야. 간단하고 효율적이지.

다른 이름으로 저장

원래 파일 이름이 마음에 들지 않으면, 원하는 이름으로 저장할 수 있어:

wget -O newfile.zip http://example.com/file.zip

다운로드 재개

예를 들어, 커다란 파일을 다운로드하는 중에 연결이 끊겼을 때. 문제없어: -c (continue) 플래그를 사용하면 돼:

wget -c http://example.com/largefile.iso

wget은 중단된 지점부터 다운로드를 계속해. 심지어 며칠이 지나도 서버가 해당 모드를 지원한다면 작동해.

전체 사이트 다운로드

맞아, wget을 사용하면 전체 사이트(또는 복사본)을 다운로드할 수 있어. --mirror 옵션을 사용해봐:

wget --mirror http://example.com

이 명령어는 디렉토리 구조를 유지하면서 사이트를 다운로드할 거야. 이제 오프라인 모드에서 사용할 수 있는 사이트 "미러"가 생긴 거지.


3. curlwget 비교

기능 curl wget
다양한 프로토콜 지원 HTTP/HTTPS 및 FTP만
자동 다운로드 재개 아니요 (스크립팅 필요)
API 작업 아니요
파일 관리의 간편함 중간 최고
전체 사이트 다운로드 아니요

결론적으로, API 작업이나 특정한 작업이 필요하다면 curl을 사용하고, 파일 다운로드가 주된 목적이라면 wget이 더 나은 선택이에요.


4. 실용적인 적용

파일 다운로드 및 처리

wget과 텍스트 작업 기술을 결합해보자:

wget -O data.txt http://example.com/data.txt
cat data.txt | grep "keyword" | awk '{print $2, $4}'

여기서 우리는 파일을 다운로드하고, 키워드를 기준으로 줄을 필터링하고 필요한 열을 추출했어.

API 작업

curl을 사용해 환율을 다운로드하고 필요한 통화를 찾아보자:

curl -s "https://api.exchangerate-api.com/v4/latest/USD" | grep "EUR"

이건 자동화된 환율 변환 시스템을 구축하려고 할 때 유용해.

업데이트 자동화

매일 파일 업데이트를 다운로드해야 한다고 상상해봐. 여기 간단한 스크립트 예시가 있어:

#!/bin/bash
wget -O updates.zip http://example.com/daily-updates.zip
unzip -o updates.zip -d /path/to/updates

스크립트를 저장하고 cron에 추가해. 이제 이 스크립트는 자동으로 실행될 거야 — 좋지 않아?


5. 일반적인 오류와 특이사항

403 오류 (금지됨):

서버가 추가적인 헤더 (예: User-Agent)를 요구할 때 발생할 수 있어. 이렇게 해결하면 돼:

curl -A "Mozilla/5.0" http://example.com

리다이렉션:

서버가 다른 URL로 리다이렉션할 경우, curl-L 플래그를 추가하면 돼:

curl -L http://example.com

SSL 오류:

가끔 wget이나 curl이 SSL 관련 경고를 할 수 있어. 인증서 검사를 비활성화할 수 있지만 (안전한 방법은 아님):

wget --no-check-certificate https://example.com
curl -k https://example.com

이 강력한 도구들로 네트워크를 정복할 준비 완료. 이제 어떤 파일이나 API도 너에게서 벗어날 수 없어 — 다운로드하고, 처리하고, 자동화하는 시간이다!

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION