본문 바로가기
utils

[Util] curl 간단사용법 정리 : web의 자원 다운로드하기.

by ds31x 2023. 9. 29.

CLI (command line interface)로 URL을 통해,

특정 자원(resource. 주로 설치파일이나 image등)을 웹으로부터 가져와 저장하는 tool.

 

엄밀히 말하면 다운로드만 하는 건 아님.
다양한 프로토콜들(http, https, ftp, pop3 등)을 이용해 
URL 로 데이터를 전송하여 
서버에 데이터를 보내거나 가져오기 위해 사용되는
CLI 기반 프로그램.

 

curl관련 사이트는 다음과 같음

http://curl.haxx.se/docs/manpage.html

 

curl - How To Use

 

curl.se

 

워낙 널리 사용되는 프로그램이라 man curl 로 참고해도 차고 넘침.

가장 많이 애용되는 방법들은 다음과 같음.


특정 resource를 다운로드.

curl http://example.com/resource > target.ext
  • http://example.com/resource 의 url의 자원을 다운로드 받아
  • target.ext 라는 파일에 저장.

curl은 아무 option없이 사용될 경우, stdout (표준출력. 흔히 모니터)로 지정한 url의 resource를 출력함.

때문에 보통 redirection > 을 사용하여 파일로 저장.


option으로 파일명을 지정하여 저장

curl -o target.ext http://example.com/resource
  • -o : lowercase o 의 경우, output 파일명을 지정할 수 있음.
  • -O : uppercase O 의 경우, 다운로드하는 resource의 이름 그대로 저장됨.
  • -o- : stdout 으로 출력이 이루어짐. 아무 option을 주지 않은 아까의 경우와 같음.

복수의 파일을 다운로드.

-O option 과 url의 쌍을 여러개 기술하면 된다.

아니면, 정규표현식 (regex)를 사용하여 복수의 resource를 지정할 수 있다.

 

가장 많이 사용되는 방식은 curly bracket을 사용한 다음의 방법임.

curl -O http://example.com/{file0,file1,file2}.ext
  • file0.ext, file1.ext, file2.ext
  • -O : uppercase 를 사용했기 때문에 원래 자원의 이름으로 저장됨을 기억할 것.

아래는 regex를 이용하여 같은 동작이 이루어지도록 한 방법임.

curl -O http://example.com/file[0-2].ext

그 외의 options

curl은 URL에 해당하는 resource를 서비스하고 있는 서버에 특정 header나 메서드 등을 지정할 수 있다.

RESTful API 개발 등을 할 때 테스트용으로 사용됨.

 

-H : 서버에 보내는 request의 header를 지정.

-i : 서버의 response 중 header만을 처리하겠다는 옵션. stdout등에 http 응답코드등만 출력되게 됨.

-X : 사용할 method 지정, HTTP에서 지원하는 GET, PUT, POST, PATCH, DELETE, OPTIONS 들 중 하나로 지정됨.

-d : HTTP의 POST 요청시 서버로 보내는 내용을 지정하는데 사용되는 옵션.

-L : 지정될 경우, HTTP 301, 302 response의 리디렉션 URL로 이동이 허용됨. *

-b : 뒤에 놓이는 cookie file을 전송.

-sc : silent 상태로 뒤에 놓이는 파일명으로 cookie를 받아 저장함.

-f : --fail : 요청이 실패(서버가 4xx 또는 5xx의 상태코드 반환)했을 때, 아무 출력도 내지않고 종료함. *

-s : --silent : pregress 표시 없이 아무 출력을 내보내지 않고 실행됨. *

-S : --show-error : silent 모드로 설치하더라도 오류 메시지를 출력하라고 지시함. * 

 

다음의 예는 localhost의 8080 포트로 data 라는 리소스에 POST로 JSON 데이터를 전송.

curl -d '{"key0":"value0", "key1":"value1"}' \
-H "Content-Type: application/json" \
-X POST http://localhost:8080/data

참고하면 좋은 자료들

https://www.thegeekstuff.com/2012/04/curl-examples/

 

15 Practical Linux cURL Command Examples (cURL Download Examples)

15 Practical Linux cURL Command Examples (cURL Download Examples) by Lakshmanan Ganapathy on April 11, 2012 cURL is a software package which consists of command line tool and a library for transferring data using URL syntax. cURL supports various protocols

www.thegeekstuff.com

https://www.thegeekstuff.com/2012/07/wget-curl/

 

wget vs curl: How to Download Files Using wget and curl

wget vs curl: How to Download Files Using wget and curl by Ramesh Natarajan on July 6, 2012 Question: I typically use wget to download files. On some systems, wget is not installed and only curl is available. Can you explain me with a simple example on how

www.thegeekstuff.com

https://inpa.tistory.com/entry/LINUX-%2525F0%25259F%252593%25259A-CURL-%2525EB%2525AA%252585%2525EB%2525A0%2525B9%2525EC%252596%2525B4-%2525EC%252582%2525AC%2525EC%25259A%2525A9%2525EB%2525B2%252595-%2525EB%25258B%2525A4%2525EC%252596%252591%2525ED%252595%25259C-%2525EC%252598%252588%2525EC%2525A0%25259C%2525EB%2525A1%25259C-%2525EC%2525A0%252595%2525EB%2525A6%2525AC