curl을 사용하여 Linux 명령 행에서 파일을 다운로드하는 방법

0
1141
Ubuntu 스타일 Linux 데스크탑의 터미널 창
Fatmawati Achmad Zaenuri / 셔터 스톡

리눅스 curl 명령은 파일 다운로드보다 훨씬 더 많은 일을 할 수 있습니다. 무엇을 알아보십시오 curl 가능하고 대신에 사용해야 할 때 wget.

curl vs. wget : 차이점은 무엇입니까?

사람들은 종종 wgetcurl 명령. 명령은 기능적으로 겹칩니다. 그들은 각각 원격 위치에서 파일을 검색 할 수 있지만, 그 유사성이 끝나는 곳입니다.

wget 콘텐츠와 파일을 다운로드 할 수있는 환상적인 도구입니다. 파일, 웹 페이지 및 디렉토리를 다운로드 할 수 있습니다. 여기에는 웹 페이지의 링크를 순회하고 전체 웹 사이트에서 콘텐츠를 재귀 적으로 다운로드하는 지능형 루틴이 포함되어 있습니다. 그것은 명령 줄 다운로드 관리자로서 뛰어납니다.

curl 완전히 다른 요구를 충족시킵니다. 예, 파일을 검색 할 수 있지만 검색 할 콘텐츠를 찾는 웹 사이트를 재귀 적으로 탐색 할 수는 없습니다. 뭐 curl 실제로는 해당 시스템에 요청하고 응답을 검색하고 표시하여 원격 시스템과 상호 작용할 수 있습니다. 이러한 응답은 웹 페이지 컨텐츠 및 파일 일 수 있지만 컬 요청이 요청한 “질문”의 결과로 웹 서비스 또는 API를 통해 제공된 데이터를 포함 할 수도 있습니다.

curl 웹 사이트에만 국한되지 않습니다. curl HTTP, HTTPS, SCP, SFTP 및 FTP를 포함하여 20 개가 넘는 프로토콜을 지원합니다. 그리고 Linux 파이프를 잘 다루기 때문에 curl 다른 명령 및 스크립트와보다 쉽게 ​​통합 될 수 있습니다.

저자 curl 그가 보는 차이점을 설명하는 웹 페이지가 있습니다. curlwget.

컬 설치

이 기사를 연구하는 데 사용 된 컴퓨터 중에서 Fedora 31과 Manjaro 18.1.0은 curl 이미 설치되어있다. curl Ubuntu 18.04 LTS에 설치해야했습니다. Ubuntu에서 다음 명령을 실행하여 설치하십시오.

sudo apt-get install curl

터미널 창에서 sudo apt-get install curl

컬 버전

그만큼 --version 옵션은 curl버전을보고하십시오. 또한 지원하는 모든 프로토콜을 나열합니다.

curl --version

터미널 창에서 curl --version

웹 페이지 검색

우리가 지적하면 curl 웹 페이지에서 우리를 위해 검색합니다.

curl https://www.bbc.com

터미널 창에서 https://www.bbc.com 컬

그러나 기본 조치는 소스 코드로 터미널 창에 덤프하는 것입니다.

터미널 창에 웹 페이지 소스 코드를 표시하는 curl의 출력

조심: 말하지 않으면 curl 파일로 저장된 것을 원하면 항상 터미널 창에 덤프하십시오. 검색중인 파일이 이진 파일 인 경우 결과를 예측할 수 없습니다. 쉘은 이진 파일의 일부 바이트 값을 제어 문자 또는 이스케이프 시퀀스로 해석하려고 시도 할 수 있습니다.

파일로 데이터 저장

curl에게 출력을 파일로 리디렉션하도록 지시합시다.

curl https://www.bbc.com  > bbc.html

터미널 창에서 https://www.bbc.com> bbc.html 컬

이번에는 검색된 정보가 표시되지 않고 파일로 바로 전송됩니다. 표시 할 터미널 창 출력이 없으므로 curl 일련의 진행 정보를 출력합니다.

진행률 정보가 웹 페이지 소스 코드에 흩어져 있었으므로 이전 예제에서는이 작업을 수행하지 않았습니다. curl 자동으로 억제했습니다.

이 예에서는 curl 출력이 파일로 경로 재 지정되고 진행 정보를 생성하는 것이 안전함을 감지합니다.

터미널 창에 다운로드 진행률 표시기 컬

제공되는 정보는 다음과 같습니다.

  • 총계: 검색 할 총액.
  • 받은 %: 지금까지 검색된 데이터의 백분율 및 실제 값.
  • % Xferd: 데이터가 업로드되는 경우 전송 된 백분율 및 실제.
  • 평균 속도: 평균 다운로드 속도입니다.
  • 평균 속도 업로드: 평균 업로드 속도.
  • 총 시간: 예상 전송 총 기간.
  • 보낸 시간:이 전송에 소요 된 경과 시간.
  • 남은 시간: 전송 완료까지 남은 예상 시간
  • 현재 속도:이 전송의 현재 전송 속도.

우리는에서 출력을 리디렉션했기 때문에 curl 파일에 “bbc.html”이라는 파일이 생겼습니다.

curl로 만든 bbc.html 파일

해당 파일을 두 번 클릭하면 검색된 웹 페이지가 표시되도록 기본 브라우저가 열립니다.

검색된 웹 페이지가 브라우저 창에서 표시됩니다.

브라우저 주소 표시 줄의 주소는 원격 웹 사이트가 아닌이 컴퓨터의 로컬 파일입니다.

우리는 할 필요가 없습니다 리디렉션 파일을 작성하기위한 출력 우리는 파일을 사용하여 파일을 만들 수 있습니다 -o (출력) 옵션 및 정보 curl 파일을 만들려면 여기서 우리는 -o 옵션을 선택하고 “bbc.html”을 만들려는 파일 이름을 제공하십시오.

curl -o bbc.html https://www.bbc.com

터미널 창에서 curl -o bbc.html https://www.bbc.com

진행률 표시 줄을 사용하여 다운로드 모니터링

텍스트 기반 다운로드 정보를 간단한 진행률 표시 줄로 바꾸려면 -# (진행률 표시 줄) 옵션.

curl -x -o bbc.html https://www.bbc.com

터미널 창에서 curl -x -o bbc.html https://www.bbc.com

중단 된 다운로드 다시 시작

종료되거나 중단 된 다운로드를 쉽게 다시 시작할 수 있습니다. 크기 조정이 가능한 파일 다운로드를 시작하겠습니다. 우리는 Ubuntu 18.04의 최신 장기 지원 빌드를 사용할 것입니다. 우리는 --output 파일 이름을“ubuntu180403.iso”로 저장하려는 옵션을 지정할 수 있습니다.

curl --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso

curl --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso 터미널 창에서

다운로드가 시작되고 완료 될 때까지 작동합니다.

터미널 widnow에서 대량 다운로드 진행

다운로드를 강제로 중단하면 Ctrl+C 명령 프롬프트로 돌아가고 다운로드가 중단됩니다.

다운로드를 다시 시작하려면 -C (계속) 옵션. 이 원인 curl 지정된 지점에서 다운로드를 다시 시작하거나 오프셋 대상 파일 내에서. 하이픈을 사용하는 경우 - 오프셋으로 curl 파일의 이미 다운로드 된 부분을보고 자체적으로 사용할 올바른 오프셋을 결정합니다.

curl -C - --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso

curl -C---output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso ina 터미널 창

다운로드가 다시 시작됩니다. curl 다시 시작되는 오프셋을보고합니다.

curl -C---output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso 터미널 창에서

HTTP 헤더 검색

와 더불어 -I (head) 옵션에서 HTTP 헤더 만 검색 할 수 있습니다. 이것은 HTTP HEAD 명령을 웹 서버로 보내는 것과 같습니다.

curl -I www.twitter.com

터미널 창에서 curl -I www.twitter.com

이 명령은 정보 만 검색합니다. 웹 페이지 나 파일을 다운로드하지 않습니다.

터미널 창에서 curl -I www.twitter.com의 출력

여러 URL 다운로드

사용 xargs 한 번에 여러 개의 URL을 다운로드 할 수 있습니다. 아마도 하나의 기사 나 튜토리얼을 구성하는 일련의 웹 페이지를 다운로드하고 싶을 것입니다.

이 URL을 편집기에 복사하여 “urls-to-download.txt”라는 파일에 저장하십시오. 사용할 수있다 xargs 텍스트 파일의 각 줄의 내용을 전달할 매개 변수로 취급합니다. curl차례로.

https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#0
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#1
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#2
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#3
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#4
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#5

이것은 우리가 가지고 있어야 할 명령입니다 xargs 이 URL을 curl 한번에 한:

xargs -n 1 curl -O < urls-to-download.txt

이 명령은 -O 대문자 "O"를 사용하는 (원격 파일) 출력 명령 이 옵션은 curl 검색된 파일을 파일이 원격 서버에있는 것과 동일한 이름으로 저장합니다.

그만큼 -n 1 옵션은 말한다 xargs 텍스트 파일의 각 줄을 단일 매개 변수로 취급합니다.

명령을 실행하면 여러 다운로드가 차례로 시작 및 종료되는 것을 볼 수 있습니다.

xargs에서 출력 및 여러 파일 다운로드

파일 브라우저를 확인하면 여러 파일이 다운로드되었음을 알 수 있습니다. 각각은 원격 서버에 있던 이름을 가지고 있습니다.

다운로드 파일 sin 노틸러스 파일 브라우저

관련 : Linux에서 xargs 명령을 사용하는 방법

FTP 서버에서 파일 다운로드

사용 curl 사용자 이름과 비밀번호로 인증해야하더라도 FTP (File Transfer Protocol) 서버를 사용하면 쉽습니다. 로 사용자 이름과 비밀번호를 전달하려면 curl 사용 -u (사용자) 옵션을 입력하고 사용자 이름, 콜론 ":"및 비밀번호를 입력하십시오. 콜론 앞뒤에 공백을 두지 마십시오.

Rebex가 호스팅하는 무료 테스트 FTP 서버입니다. 테스트 FTP 사이트의 사전 설정 사용자 이름은 "demo"이고 비밀번호는 "password"입니다. 프로덕션 또는 "실제"FTP 서버에서이 유형의 취약한 사용자 이름과 비밀번호를 사용하지 마십시오.

curl -u demo:password ftp://test.rebex.net

터미널 창에서 curl -u demo : password ftp://test.rebex.net

curl FTP 서버를 가리키고 있으며 서버에있는 파일 목록을 반환합니다.

터미널 창에서 remtoe FTP 서버의 파일 목록

이 서버의 유일한 파일은 길이가 403 바이트 인“readme.txt”파일입니다. 찾아 보자. 파일 이름이 추가 된 순간과 같은 명령을 사용하십시오.

curl -u demo:password ftp://test.rebex.net/readme.txt

curl -u demo : password ftp://test.rebex.net/readme.txt 터미널 창에서

파일이 검색되고 curl 터미널 창에 내용을 표시합니다.

터미널 창에 표시된 FTP 서버에서 검색된 파일 내용

거의 모든 경우에, 검색된 파일을 터미널 창에 표시하지 않고 디스크에 저장하는 것이 더 편리합니다. 다시 한 번 우리는 -O (원격 파일) output 명령은 원격 서버에있는 파일 이름과 동일한 파일 이름으로 디스크에 파일을 저장합니다.

curl -O -u demo:password ftp://test.rebex.net/readme.txt

curl -O -u demo : password ftp://test.rebex.net/readme.txt 터미널 창에서

파일이 검색되어 디스크에 저장됩니다. 사용할 수있다 ls 파일 세부 정보를 확인하십시오. FTP 서버의 파일과 이름이 같으며 길이는 403 바이트입니다.

ls -hl readme.txt

터미널 창에서 ls -hl readme.txt

관련 : Linux에서 FTP 명령을 사용하는 방법

원격 서버로 매개 변수 보내기

일부 원격 서버는 전송 된 요청에서 매개 변수를 승인합니다. 매개 변수는 예를 들어 리턴 된 데이터를 형식화하는 데 사용되거나 사용자가 검색하려는 정확한 데이터를 선택하는 데 사용될 수 있습니다. 다음을 사용하여 웹 응용 프로그래밍 인터페이스 (API)와 상호 작용할 수 있습니다. curl.

간단한 예로서, ipip 웹 사이트에는 외부 IP 주소를 확인하기 위해 API를 쿼리 할 수 ​​있습니다.

curl https://api.ipify.org

추가하여 format "json"값을 사용하여 외부 IP 주소를 다시 요청할 수 있지만 이번에는 반환 된 데이터가 JSON 형식으로 인코딩됩니다.

curl https://api.ipify.org?format=json

터미널 창에서 https://api.ipify.org를 말리십시오

다음은 Google API를 사용하는 또 다른 예입니다. 책을 설명하는 JSON 객체를 반환합니다. 제공해야하는 매개 변수는 책의 국제 표준 도서 번호 (ISBN)입니다. 대부분의 도서 뒷면 표지에서 일반적으로 바코드 아래에 있습니다. 여기서 사용할 매개 변수는 "0131103628"입니다.

curl https://www.googleapis.com/books/v1/volumes?q=isbn:0131103628

터미널 창에서 curl https://www.googleapis.com/books/v1/volumes?q=isbn:0131103628

반환 된 데이터는 다음과 같습니다.

터미널 창에 표시되는 Google Book API 데이터

때로는 컬, 때로는 wget

웹 사이트에서 콘텐츠를 다운로드하고 웹 사이트의 트리 구조에서 해당 콘텐츠를 재귀 적으로 검색하도록하려면 wget.

원격 서버 또는 API와 상호 작용하고 일부 파일 또는 웹 페이지를 다운로드하려는 경우 curl. 특히 프로토콜이 지원하지 않는 많은 프로토콜 중 하나 인 경우 wget.