cURL을 사용하여 명령줄에서 원격 파일 다운로드
차례:
강력한 curl 명령줄 도구를 사용하여 거의 모든 원격 서버에서 파일을 다운로드할 수 있습니다. 오랜 명령줄 사용자는 이것이 다양한 상황에서 유용할 수 있다는 것을 알고 있지만 일을 단순하게 유지하기 위해 많은 사람들이 curl로 파일을 다운로드하는 것이 종종 웹 브라우저나 GUI 측에서 FTP 클라이언트를 사용하는 것보다 더 빠른 대안이 될 수 있음을 알게 될 것입니다. 맥 OS X(또는 리눅스).이것은 로컬 상황에 유용하지만 SSH를 통해 연결된 경우 원격 Mac에 무언가를 다운로드해야 하는 상황에 있는 경우 특별한 가치가 있습니다.
이 연습의 목적을 위해 cURL이 더 많은 프로토콜을 지원한다는 점에 유의해야 하지만 일반적으로 사용되는 두 가지 HTTP 및 SFTP 프로토콜에서 파일을 다운로드하는 데 주로 중점을 둘 것입니다. curl은 사용하기 쉽지만 명령줄에 대한 지식이 있는 것이 좋습니다.
curl로 완전 일치 파일 다운로드 -O
curl과 함께 대문자 -O 플래그를 사용하면 정확한 파일 이름을 유지하면서 원격 서버에서 파일을 다운로드합니다. 이에 대한 기본 구문은 다음과 같습니다.
컬 -O
이는 지정된 URL 파일의 이름이 "sample.zip"인 경우 파일 이름이 "sample.zip"으로 다운로드되고 파일 이름이 "LongExampleFileNameForOSXDaily-v- 1-3-51-revision-515b12-readme.txt"를 원격 서버에 저장하면 로컬 시스템에 정확한 이름으로 저장됩니다. 더 긴 파일 이름은 종종 -O보다 -o 플래그로 더 잘 처리됩니다. 곧 다룰 것입니다.
일반 독자라면 m3u 스트리밍 파일에서 실제 오디오 콘텐츠를 추출하는 방법을 설명할 때 curl -O 명령을 사용한 것을 기억할 것입니다.
curl로 다운로드를 시작하면 전송된 비율, 다운로드 소요 시간 및 남은 시간, 전송 속도가 표시됩니다.
스크린샷은 아래에 붙여넣은 예보다 더 나은 표현을 제공하지만 다음과 같이 보입니다.
% 총 수신 % % Xferd 평균 속도 시간 시간 현재 Dload 업로드 총 소요 시간 왼쪽 속도 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k
전송 속도가 표시되면 curl의 출력을 /dev/null로 리디렉션하고 이를 사용하여 인터넷 연결 속도를 테스트할 수 있지만 wget 명령은 전송 막대를 읽고 따라가기가 더 쉽기 때문에 wget이 더 좋습니다. 해당 작업에 적합합니다.
curl -o를 사용하여 다른 이름으로 원격 파일 저장
소문자 -o 플래그를 사용하면 다운로드한 파일에 원격 서버에서 이름을 지정하는 것과 다른 파일 이름을 지정할 수 있습니다. 이렇게 하면 파일 이름을 길게 하거나 레이블을 지정하여 쉽게 찾을 수 있습니다. 일반 구문은 다음과 같습니다.
컬 -o
예를 들어 긴 전체 이름 없이 Apple 서버에 나열된 iOS IPSW 파일을 저장하려면 다음을 사용할 수 있습니다.
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw
이렇게 하면 "iPhone5, 3_7.0.4_11B554a_Restore.ipsw" 파일이 다운로드되지만 더 의미 있는 "iPhone5C-704.ipsw"로 이름이 짧아집니다.
파일을 현재 작업 디렉토리에 저장하지 않으려면 다음과 같이 파일 이름의 일부로 경로를 지정하십시오.
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
curl로 동시에 여러 파일 다운로드하기
cURL은 동시에 여러 파일을 쉽게 다운로드할 수 있습니다. 다음과 같이 둘 이상의 URL을 지정하기만 하면 됩니다.
컬 -O
이름이 다르거나 다른 서버에서 호스팅되거나 다른 디렉토리 경로에 있는 파일의 경우 다음과 같이 전체 URL을 사용하십시오.
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
반면에 다운로드할 파일 이름이 증분 이름을 사용하는 경우 대괄호를 사용하여 다음과 같이 다운로드 범위를 지정할 수 있습니다.
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
이렇게 하면 각각 고유한 URL을 지정하지 않고도 fdl-1.1.txt, fd1-1.2.txt 및 fd1-1.3.txt 파일을 동시에 가져올 수 있습니다. 물론 이것은 파일이 같은 디렉토리와 같은 도메인에 있는 경우에만 작동합니다.
curl로 인증하기
또한 -u 플래그를 사용하여 cURL로 인증을 전달할 수도 있습니다.
curl -u user:pass -O ftp://remote_url/file-to-download.zip
bash 기록은 사용자 이름과 암호가 지정된 -u를 사용할 때 암호를 일반 텍스트로 저장하므로 대부분의 상황에서 권장되지 않습니다. 'curl' 앞에 공백을 두어 이 문제를 해결할 수 있습니다.스페이스바를 사용하여 명령 접두사를 사용하지 않는 경우 나중에 안전을 위해 명령 기록을 비울 수 있습니다.
지원되는 curl 프로토콜 및 HTTP 및 FTP 이외의 사용
앞서 언급했듯이 cURL 사용은 HTTP 및 FTP를 훨씬 뛰어 넘습니다. curl 매뉴얼 페이지 항목의 설명에 추가 프로토콜이 언급되어 있기 때문입니다.
또한 curl이 PUT 및 POST 요청, 쿠키, 프록시, 터널, 다운로드 재개, 심지어 HTTP 헤더 정보 가져오기 또는 사용자 에이전트 변경(효과적으로 스푸핑)에도 사용할 수 있음을 알 수 있습니다. 전용 웹 브라우저를 사용할 필요 없이.
대부분의 명령줄 유틸리티와 마찬가지로 'man curl' 명령으로 적절한 매뉴얼 페이지를 불러오면 curl에 대해 더 많이 배울 수 있습니다.