Skip to content

Linux 기본명령어 wget #
Find similar titles

Structured data

Category
Programming

리눅스 기본명령어 - wget #

'Web Get'의 약어로 웹 상의 파일을 다운로드 받을 때 사용하는 명령어로 wget은 비 상호작용 네트워크 다운로더 이다. 즉, 네트워크 상에서 데이터를 다운로드하는 기능을 수행한다. HTTP, HTTPS, FTP 프로토콜을 지원하며, HTTP proxy에서 데이터를 가져올 수도 있다. wget이 상호작용을 필요로 하지 않는다(non-interactive)는 것은 사용자가 로그인하지 않은 상태 동안에도 백그라운드 상태에서 동작할 수 있음을 의미한다. wget은 HTML과 XHTML, CSS 페이지를 다운로드 받아 웹 사이트의 로컬 버전을 만들 수 있고, 충분히 본래의 사이트의 디렉토리 구조를 만들 수 있다. 또한 recursive downloading을 지원해서, 사이트 전체를 쉽게 내려받을 수 있다. wget은 느리거나 불안정한 네트워크 환경에서도 매우 잘 작동하는 견고한 프로그램이다. 네트워크 환경이 불안해서 도중에 연결이 끊겼다면, 연결이 끊긴 시점부터 다운로드 받는 기능도 가지고 있다.

기본적인 사용법은 다음과 같다.

$ wget [옵션]... [URL]...

예를 들어 NGS 데이터의 de novo assembler 중의 하나인 velvet은 웹(https://www.ebi.ac.uk/~zerbino/velvet/)상에서 프로그램을 다운로드 받을 수 있다. 그런데 웹프라우저에서 소스 다운로드 링크를 클릭하면 다시 분석서버로 해당 파일을 업로드 해야 하는 번거로움이 발생할 수 있다. 이런 경우 wget 명령어를 이용하여 리눅스 명령행에서 바로 해당 파일을 다운로드 받을 수 있다. 이경우 wget 명령어와 다운로드 링크를 입력하기만 하면 자동으로 현재 디렉토리에 파일이 다운로드 받아 진다.

$ wget https://www.ebi.ac.uk/~zerbino/velvet/velvet_1.2.10.tgz

wget는 command-line arguments를 처리하기 위해 GNU getopt를 사용하기 때문에 긴 옵션과 짧은 옵션이 모두 존재한다. 긴 옵션은 기억하기에는 편리하지만 입력하는데 시간이 많이 소요된다. 옵션 스타일은 자유롭게 섞어서 사용할 수 있다. wget은 몇 가지 옵션 활용법만 알아도 더 편리하게 이용할 수 있다.

국외 서버에서 제공하는 다운로드 링크를 이용하는 경우 인터넷 통신이 불안정하여 중간에 끊길 수 있다. --tries 옵션은 응답이 없는 다운로드 시도에 대하여 재시도 하는 횟수를 지정한다.

$ wget --tries=10 https://www.ebi.ac.uk/~zerbino/velvet/velvet_1.2.10.tgz

다운로드 링크가 ftp 프로토콜로 제공되고 로그인 계정 정보가 요구될때는 아래와 같이 유저 정보를 지정하여 실행 할 수 있다. 예를 들어 ftp 계정(ID)이 guest 이고 password가 ftpuser이면서 ncbi에서 제공하는 미생물의 16s rRNA 서열 다운로드 받고자 한다면 아래와 같이 입력하면 된다.

$ wget --ftp-user=guest --ftp-password=ftpuser ftp://ftp.ncbi.nlm.nih.gov/blast/db/16SMicrobial.tar.gz

원래 저 파일은 NCBI에서 비로그인 사용자에게도 제공하므로 계정 정보 없이 아래와 같이 ftp 프로토콜로 접속한다는 의미의 URL만 입력해도 다운로드 된다.

$ wget ftp://ftp.ncbi.nlm.nih.gov/blast/db/16SMicrobial.tar.gz

와일드카드 문자를 이용하여 파일들을 지정하면 다수의 파일 다운로드도 가능하다. 아래는 NCBI의 BLAST nr DB 파일을 다운로드 받을 수 있는 명령어이다.

$ wget ftp://ftp.ncbi.nlm.nih.gov/blast/db/nr*.tar.gz

다수의 파일을 다운로드 받을 경우 -o 옵션을 이용해서 다운로드 로그를 파일에 생성할 수 있다. 아래의 경우는 연결이 끊기더라도 10번을 더 시도해 보면서 다운로드를 수행하고 'log'라는 파일을 생성하여 로그를 남기는 명령어 이다.

$ wget --tries=10 http://fly.srk.fer.hr/ -o log
또는,
$ wget --tries=10 http://fly.srk.fer.hr/ --output-file=log

-a(--append-output=LOGFILE_NAME) 옵션은 -o 옵션 처럼 다운로드 로그를 남기는 옵션이지만 기존의 파일을 덮어쓰지 않고 추가만 한다. 만약 지정된 로그 파일이 존재하지 않으면 해당 이름의 파일을 생성하고 로그를 남긴다.

$ wget --tries=10 http://fly.srk.fer.hr/ -a log
또는,
$ wget --tries=10 http://fly.srk.fer.hr/ --append-output=log

그리고 유용한 옵션 중의 하나가 -c 옵션인데, 이전에 다운로드 받다가 중단된 파일을 이어서 다운로드 받는다. 이 경우 기존의 중단된 파일이 있는 디렉토리에서 실행해야 다운로드가 이어진다.

$ wget -c https://www.ebi.ac.uk/~zerbino/velvet/velvet_1.2.10.tgz

옵션 #

  • -O filename DOWNLOAD-URL : wget을 통해 다운로드 할 경우 저장되는 파일명은 URL의 마지막 '/' 뒤에 오는 단어를 파일명으로 저장한다.
  • --limit-rate=N DOWNLOAD-URL : wget은 기본 값으로 최대 대역폭을 사용한다. 필요할 경우 '--limit-rate' 옵션을 이용하여 다운로드 속도를 조절할 수 있다.
  • -b DOWNLOAD-URL : 다운로드 작업을 백그라운드에서 실행한다. 로그는 wget-log에 기록된다. 로그를 실시간으로 확인하려면 tail -f wget-log를 이용하여 볼 수 있다.
  • --user-agent="User-info" DOWNLOAD-URL : 웹브라우저를 이용하지 않을 경우 일부 사이트에서는 다운로드를 제한하는데, 이 경우 '--user-agent' 옵션을 이용하여 사이트에 정보를 전송한다.
  • -V, --version : Wget의 버전을 보여준다.
  • -h, --help : Wgwt의 명령 옵션의 전부에 대한 도움말을 출력한다.
  • -b, --background : 시작한 후 즉시 백그라운드에서 작동한다. 결과 파일이 없음이 –o를 통해 지정되었다면, 결과는 wget-log로 다시 보내진다.
  • -e command, --execute command : .wgetrc를 읽어서 명령을 실행한다.
  • -d, --debug : 디버그 내용을 출력한다.
  • -i file, --input-file=file : 다운받을 URL 주소를 로컬이나 파일에서 찾는다. 만약 file에 ‘-’를 입력하면 표준 입력으로 URL를 받는다.
  • -F, --force-html : 파일에서 input을 읽어올 때, HTML 파일로 처리한다.
  • -i FILE-WHICH-HAS-URLS : 한 번에 여러개의 파일을 다운로드 한다. URL은 개행으로 구분되어 입력된 파일을 통해 입력한다.
  • --reject=FILE-EXTENSION DOWNLOAD-URL : 특정 파일 확장자를 제외하고 다운로드 한다.
  • -r -A.FILE-EXTENSION DOWNLOAD-URL : 특정 파일 확장자만 다운로드 한다. '-r'은 재귀적 탐색을, '-A'는 accept할 파일 타입을 지정한다.

이 외에도 다양한 옵션들이 있다. 다른 옵션에 대한 상세정보는 GNU wget 매뉴얼을 참조하기 바란다.

#

간혹 다운로드 링크가 https://www.ebi.ac.uk/~zerbino/velvet/velvet_1.2.10.tgz 이런 식으로 웹상의 파일위치를 직접 가리키는 경우가 아닌 웹서버가 다운로드 스크립트를 실행시켜(간단히 말해 다운로드 버튼을 클릭하면 웹서버가 어떤 동작을 취한 후 파일을 전달하는 경우) 다운로드 url에 '&' 문자가 포함되는 경우가 있다. 이 경우 바로 복사한 url을 wget 명령어와 함께 실행시키면 에러가 발생하는데, 리눅스에서는 명령행 에 '&' 문자가 있으면 '&' 문자 앞의 명령어를 백그라운드에서 실행 시키기 때문이다. 이 경우 입력된 url이 '&' 문자에서 끊기기 때문에 정확한 url이 입려되지 않아 에러가 발생하고, 엉뚱한 명령어가 백그라운드로 실행되는 로그가 화면에 출력될 것이다. 웹서비스에서 보안상의 이유로 파일을 직접 다운로드 할 수 없도록 이러한 조치가 되어 있는 경우가 많다. 이 경우 리눅스 GUI 환경에서 웹브라우저를 이용하여 해당 웹페이지에서 다운로드 받을 수 있다.

Suggested Pages #

0.0.1_20140628_0