Daylogs/Unix
cURL 로 파일 다운로드 받기
ohgyun
2013. 3. 5. 23:58
발생일: 2013.03.05
문제:
맥으로 넘어와서 가장 많이 사용하는 커맨드 중의 하나가 curl 이다.
문제:
맥으로 넘어와서 가장 많이 사용하는 커맨드 중의 하나가 curl 이다.
커맨드라인에 익숙치 않았던 때엔,
'오른쪽 버튼 > 다른 이름으로 저장 > 다운로드 폴더에 가서 복사 > 원하는 폴더에 붙여넣기'
가 얼마나 귀찮은 일인지 몰랐더랬다.
얼마 전엔 비슷한 패턴의 주소를 가진 파일들을 한꺼번에 다운로드 받을 일이 있었는데,
얼마 전엔 비슷한 패턴의 주소를 가진 파일들을 한꺼번에 다운로드 받을 일이 있었는데,
curl 을 이용해서 노가다 없이 가뿐하게 받을 수 있었다.
그치만 사실,..
스크립트를 짜느라 하나 하나 클릭해서 다운로드 받는 것보단 오랜 시간이 걸리긴 했다. -_-a
ㅎㅎㅎ 여튼, 이번에 스크립트를 짜보면서 curl 에 좀 더 익숙해졌다.
유용한 몇 가지 기능을 메모해둔다.
해결책:
먼저, curl 은 커맨드 라인에서 URL 형태의 리소스를 요청/응답할 수 있는 도구다.
전체 매뉴얼은 커맨드 라인에서 `man curl` 을 호출해 볼 수 있고,
curl 사이트의 문서 페이지(http://curl.haxx.se/docs/manpage.html)에서도 확인할 수 있다.
아래는 몇 가지 옵션을 사용한 유용한 예제이다.
1. 응답을 파일에 쓰기
$ curl http://example.com/resource > foo.txt
옵션 없이 호출하는 curl 커맨드는 표준 출력으로 응답을 출력하는데,
위와 같이 출력을 리다이렉트해서 파일에 쓸 수 있다.
2. 파일명으로 저장하기
$ curl -o foo.txt http://example.com/foo.txt
-o 옵션으로 리소스의 파일명을 지정해 다운로드할 수 있다.
$ curl -O http://example.com/foo.txt
-O 옵션을 사용하는 경우, 리소스의 파일명을 그대로 사용한다.
3. 여러 파일 다운로드 받기
$ curl -O http://example.com/foo[0-9].txt
위 코드는, foo0.txt 부터 foo9.txt 파일을 다운로드 받는다.
$ curl -O http://example.com/foo-[a-z][0-9].txt
[]는 여러 번 조합할 수 있고, 위 코드는 foo-a0.txt 부터 foo-z9.txt 까지의 파일을 다운로드 받는다.
$ curl -O http://example.com/{foo,bar,baz}.txt
중괄호({})를 써서 위와 같이 호출할 수도 있고, foo.txt, bar.txt, baz.txt 를 다운로드 받는다.
4. for 문으로 여러 파일 다운로드 받기
$ files="foo bar baz"
$ for name in files; do
curl -O "http://example.com/${name}.txt"
done
싱글 라인으로 호출하는 경우, 가끔 제대로 다운로드 받아지지 않는 경우가 있는 것 같다.
왜인지 정확히 살펴보진 않았지만, 위와 같이 for 구문으로 호출하는 방법으로 우회할 수 있다.
덧)
리눅스 기반에서는 curl 대신, wget 이 설치되어 있고, 사용 방법은 대체로 비슷하다.
cURL의 옵션에 대한 상세한 설명은 아래 포스트를 참고하면 된다.
참고:
- wget vs curl: http://www.thegeekstuff.com/2012/07/wget-curl/
- Single line command line to download multiple files: http://lists.apple.com/archives/macos-x-server/2004/Nov/msg01211.html
반응형