[linux] 리눅스 cURL 커맨드 기초 사용 방법

cURL은

터미널 커맨드라인에서 빠르게 파일을 전송해야 할 때, cURL을 사용해서 빠르게 파일을 다운로드 할 수 있습니다. 웹 경로를 알고 있으면 별도의 클라이언트 프로그램 없이 바로 로컬 디렉토리에 파일을 다운로드 할 수 있는 커맨드입니다.

FTP 프로토콜을 지원하기 때문에 FTP 서버에서 파일을 다운로드하거나 업로드 할 수 있습니다. 옵션으로 FTP ID와 패스워드를 함께 표시하면 로그인 정보가 필요한 FTP 서버에서도 파일을 업/다운로드 할 수도 있습니다.

cURL 옵션과 사용방법

먼저 터미널에서 curl 커맨드를 실행해서 설치가 되어있는지 확인합니다.

$> curl
curl: try 'curl --help' or 'curl --manual' for more information

기본 사옹법은 다음과 같습니다.

curl [웹URL]

curl 커맨드에 옵션을 사용하지 않으면 다운로드한 페이지, 또는 파일 내용을 터미널 화면에 그대로 출력합니다.

$> curl https://apost.dev
<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>어포스트 기술 블로그</title>
    <link rel="stylesheet" href="/assets/built/screen.css?v=328446f5f4">

    <meta name="description" content="웹 개발, DB, 리눅스, 스크립팅 개발 정보를 제공하는 기술 블로그입니다.">
    <link rel="canonical" href="https://apost.dev/">
    <meta name="referrer" content="no-referrer-when-downgrade">
    <link rel="next" href="https://apost.dev/page/2/">

웹 URL의 페이지, 또는 웹 링크 파일을 다운로드 하려면 옵션을 사용해야 합니다.

curl 커맨드를 사용해 파일을 다운로드 해보겠습니다. 접근하는 파일이 HTML 페이지이면 HTML 페이지 자체를 다운로드 합니다.

이때 -O 옵션은 다운로드하는 페이지, 또는 파일과 같은 이름으로 다운로드 합니다. 대문자 "O"인 것에 주의해야 합니다. 그리고 URL 경로 끝에 파일로 사용할 수 없는 페이지 이름이 없으면 오류가 발생합니다. 주의해야 합니다.

다운로드 하는 파일에 다른 이름을 사용하려면 소문자 "o"를 사용합니다.

$> curl -o source.html https://apost.dev/1022
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1066  100  1066    0     0  15113      0 --:--:-- --:--:-- --:--:-- 15228

다운로드가 시작되면 다운로드하는 파일에 대한 자세한 실시간 정보가 표시됩니다. 다운로드한 HTML 페이지는 -o 옵션으로 표시한 source.html 파일에 저장됩니다.

FTP 다운로드

FTP 서버에서 다운로드하는 커맨드는 다음과 같습니다. 웹 경로의 파일을 다운로드하는 방식과 같으며 프로토콜만 ftp로 달라집니다.

curl -o download.zip ftp://192.168.0.2/zipfiles/파일이름

사용자 계정 인증이 필요한 FTP 서버에는 다음처럼 로그인ID와 패스워드를 -u 옵션으로 표시하면 됩니다.

curl -o 다운로드파일이름 -u 사용자ID:패스워드 ftp://192.168.0.2/zipfiles/파일이름

FTP 업로드

cURL 커맨드는 FTP 서버에 파일을 업로드 할 수 있습니다.

사용 옵션은 -T 입니다. FTP 서버에 로컬 파일을 업로드하려면 다음과 같이 커맨드를 사용합니다.

curl -T 로컬파일 -u 사용자ID:패스워드 ftp://192.168.0.2/uploadfolder/업로드파일이름

로컬 파일 이름과 같은 이름으로 업로드를 하려면 "업로드파일이름"은 생략할 수 있습니다.

여러 개의 로컬 파일을 일괄 업로드하려면 다음처럼 여러 개의 로컬 파일을 표시할 수 있습니다.

curl -T '{로컬파일1,로컬파일2}' ftp://192.168.0.2/uploadfolder/

일련 번호로 나열된 파일을 업로드할 때는 범위를 다음처럼 표현해서 많은 파일을 한꺼번에 전송할 수 있습니다. 다음 커맨드는 로컬 경로의 "attachimg_1.jpg" ~ "attachimg_50.jpg" 범위의 이미지 파일을 FTP 서버로 전송합니다.

curl -T 'attachimg_[1-50].jpg' ftp://192.168.0.2/uploadfolder/

FTP 서버에 업로드 할 때는 쓰기 권한이 있어야 합니다.