이 가이드에서는 오픈소스(무료) 소프트웨어인 wget을 사용해 리눅스, 윈도우, macOS의 명령줄에서 파일을 다운로드하는 방법을 단계별로 알려드립니다. wget은 리눅스와 UNIX 환경을 위해 만들어진 강력한 명령줄 다운로더로, 이후 윈도우와 macOS로도 포팅되었습니다.
명령줄 도구라는 점에 속지 마세요. wget은 매우 강력하고 유연한 도구로, 오늘날 최고 수준의 그래픽 다운로더들에 전혀 뒤처지지 않습니다. 다운로드 재개, 대역폭 제어, 인증 처리 등 다양한 기능을 갖추고 있습니다. 이 글에서는 wget의 기본 사용법부터 시작해, wget과 cron을 조합해 웹사이트를 자동으로 백업하는 방법까지 소개하겠습니다.
wget 설치하기
대부분의 리눅스 배포판에는 wget이 기본적으로 설치되어 있습니다. 혹시 설치되어 있지 않은 시스템이라면 아래 명령어를 사용하세요.
Red Hat 계열 배포판(Fedora 등)에서는:
# yum install wget
Debian 계열 배포판(Ubuntu 등)에서는:
# sudo apt-get install wget
위 명령어 중 하나로 해결될 것입니다. 그래도 안 된다면 사용 중인 리눅스 배포판의 매뉴얼을 참고해 패키지 설치 방법을 확인하세요. 윈도우 사용자는 관련 웹사이트에서 wget을 받을 수 있고, Mac 사용자를 위한 macOS wget 설치 가이드도 별도로 마련되어 있으니 참고하시기 바랍니다.
기본 사용법 – URL로 파일 다운로드
다운로드 도구가 수행하는 가장 기본적인 작업은 URL에서 파일을 내려받는 것입니다. wget으로 파일을 다운로드하는 방법은 다음과 같습니다.
# wget https://www.simplehelp.net/images/file.zip
네, 정말 이렇게 간단합니다. 이제 좀 더 흥미로운 작업을 해보겠습니다.
웹사이트 통째로 다운로드하기
wget의 진짜 실력은 여기서 드러납니다. 웹사이트를 다운로드할 때 wget이 어느 깊이까지 링크를 따라갈지 지정할 수 있습니다. 예를 들어 야후! 홈페이지의 첫 번째 레벨 링크만 다운로드하고 싶다면 다음과 같이 입력합니다.
# wget -r -l 1 https://www.yahoo.com/
각 옵션의 의미는 다음과 같습니다. -r은 재귀적(recursive) 검색을 활성화하고, -l은 레벨(level)을 의미하며 뒤에 붙는 숫자 1은 몇 단계 깊이까지 파일을 가져올지 지정합니다. 숫자를 2로 늘려보면 wget이 얼마나 더 오래 걸리는지 직접 체감할 수 있습니다.
특정 확장자 파일만 골라내기
웹사이트에서 모든 "jpeg" 이미지를 다운로드하고 싶다고 가정해봅시다. 리눅스 명령줄에 익숙한 사용자라면 "wget https://www.sevenacross.com*.jpeg" 같은 명령이 동작할 거라고 추측할 수 있지만, 안타깝게도 이 방법은 작동하지 않습니다. 대신 다음과 같이 입력해야 합니다.
# wget -r -l1 --no-parent -A.jpeg https://www.yahoo.com
-A 옵션은 다운로드할 파일의 확장자를 지정하고, --no-parent는 상위 디렉터리로 벗어나지 않도록 제한합니다.
중단된 다운로드 이어서 받기
wget의 또 다른 매우 유용한 기능은 다운로드 재개입니다. 큰 파일을 다운로드하던 중 인터넷 연결이 끊겼다고 생각해봅시다. -c(continue) 옵션을 사용하면 중단된 지점부터 이어서 다운로드할 수 있습니다.
# wget -c https://www.example_url.com/ubuntu-live.iso
cron으로 웹사이트 자동 백업 구축하기
이제 웹사이트를 매일 자동으로 백업하는 환경을 만들어 보겠습니다. 다음 명령은 사이트 전체를 로컬 디스크에 미러링합니다. 이를 위해 wget에는 전용 옵션인 --mirror가 마련되어 있습니다. 아래 명령에서 sevenacross.com을 여러분의 웹사이트 주소로 바꿔 실행해 보세요.
# wget --mirror https://www.sevenacross.com/
명령 실행이 끝나면 웹사이트의 로컬 미러가 완성됩니다. 백업용 도구로 꽤 쓸만하죠. 이제 이 명령을 셸 스크립트로 만들고, 매일 자정에 실행되도록 예약해 보겠습니다. 좋아하는 텍스트 편집기를 열고 다음 내용을 입력하세요. 백업 경로와 웹사이트 URL은 여러분의 환경에 맞게 수정해야 합니다.
#!/bin/bash
YEAR=`date +"%Y"`
MONTH=`date +"%m"`
DAY=`date +"%d"`BACKUP_PATH=`/home/backup/` # 백업 디렉터리 경로로 변경
WEBSITE_URL=`https://www.sevenacross.net` # 백업할 웹사이트 주소로 변경# 백업 디렉터리 생성 후 이동
cd $BACKUP_PARENT_DIR/$YEAR/$MONTH
mkdir $DAY
cd $DAYwget --mirror ${WEBSITE_URL}
파일 이름을 website_backup.sh처럼 저장한 뒤 실행 권한을 부여합니다.
# chmod +x website_backup.sh
crontab 명령으로 cron 설정을 열고 맨 끝에 다음 줄을 추가합니다.
0 0 * * * /path/to/website_backup.sh
이제 매일 /home/backup/YEAR/MONTH/DAY 경로에 웹사이트 사본이 저장됩니다. cron과 crontab 사용에 대한 자세한 내용은 별도 튜토리얼을 참고하세요.
마무리
명령줄에서 파일을 다운로드하는 기본기를 익혔다면, 이제 고급 기능으로 나아갈 차례입니다. wget의 man 페이지를 살펴보세요. 명령줄에서 man wget을 입력하면 됩니다.