소개
Linux 에서 비대화형 다운로드에 대한 초보자 랩에 오신 것을 환영합니다. 명령줄에서 파일을 효율적으로 다운로드하는 능력은 모든 Linux 사용자 또는 시스템 관리자에게 필수적인 기술입니다.
이 랩에서는 수동 개입 없이 인터넷에서 파일을 다운로드할 수 있는 강력한 유틸리티인 wget 명령을 사용하는 방법을 배우게 됩니다. 이 도구는 여러 파일을 가져오거나, 백그라운드에서 다운로드하거나, 스크립트에서 다운로드 작업을 자동화해야 할 때 특히 유용합니다.
이 랩이 끝나면 wget을 사용하여 개별 파일을 다운로드하고, 다운로드 파일의 이름을 바꾸고, 목록에서 여러 파일을 다운로드하는 방법을 이해하게 됩니다. 이 모든 작업은 그래픽 인터페이스나 대화형 프롬프트 없이 명령줄을 통해 수행됩니다.
환경 설정 및 기본 다운로드
이 첫 번째 단계에서는 작업 디렉토리를 만들고 wget 명령을 사용하여 단일 파일을 다운로드하는 방법을 배웁니다.
작업 디렉토리 생성
다운로드한 모든 파일을 저장할 디렉토리를 만들어 시작해 보겠습니다. 이렇게 하면 파일을 한 곳에서 정리하는 데 도움이 됩니다.
프로젝트 디렉토리로 이동하여 download_resources라는 새 디렉토리를 만듭니다.
cd ~/project
mkdir download_resources
wget 명령 이해
wget 명령은 웹에서 파일을 비대화형으로 다운로드하기 위한 유틸리티입니다. 기본 구문은 다음과 같습니다.
wget [options] [URL]
첫 번째 다운로드
이제 wget을 사용하여 파일을 다운로드해 보겠습니다. 테스트 파일로 Python 배포 패키지를 다운로드합니다.
cd ~/project/download_resources
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
이 명령을 실행하면 다음과 유사한 출력이 표시됩니다.
--2024-01-10 10:14:51-- https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
Resolving www.python.org (www.python.org)... 151.101.76.223, 2a04:4e42:12::223
Connecting to www.python.org (www.python.org)|151.101.76.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22540566 (21M) [application/octet-stream]
Saving to: 'Python-3.6.1.tgz'
Python-3.6.1.tgz 100%[=============================================================>] 21.50M 26.8MB/s in 0.8s
2024-01-10 10:14:52 (26.8 MB/s) - 'Python-3.6.1.tgz' saved [22540566/22540566]
이 출력은 다음을 보여줍니다.
- 액세스 중인 URL
- 서버의 IP 주소
- HTTP 응답 (200 OK 는 성공을 의미함)
- 파일 크기 (약 21MB)
- 다운로드 진행률
- 다운로드 속도 및 시간
- 파일이 원래 이름으로 저장되었음을 확인
파일이 올바르게 다운로드되었는지 확인해 보겠습니다.
ls -lh
해당 크기와 함께 Python-3.6.1.tgz 파일이 디렉토리에 표시되어야 합니다.
사용자 지정 파일 이름으로 다운로드
이 단계에서는 파일을 다운로드하고 URL 에서 가져온 기본 이름 대신 사용자 지정 파일 이름으로 저장하는 방법을 살펴봅니다.
-O 옵션 사용
-O (대문자 O, 숫자 0 이 아님) 옵션을 사용하면 출력 파일의 이름을 지정할 수 있습니다. 이 기능은 다음과 같은 경우에 유용합니다.
- 더 설명적인 파일 이름을 원하는 경우
- URL 의 기본 파일 이름이 너무 복잡한 경우
- 동일한 리소스의 여러 버전을 다운로드하는 경우
다른 Python 패키지를 다운로드해 보되, 이번에는 사용자 지정 이름으로 저장해 보겠습니다.
cd ~/project/download_resources
wget -O CustomPython.tgz https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
이 명령에서:
-O CustomPython.tgz는wget에게 파일을CustomPython.tgz로 저장하도록 지시합니다.- 파일은 지정된 URL 에서 다운로드되지만 사용자 지정 이름으로 저장됩니다.
출력은 이전과 유사하지만 "Saving to" 줄에 사용자 지정 파일 이름이 표시되는 것을 확인하십시오.
--2024-01-10 10:20:51-- https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
Resolving www.python.org (www.python.org)... 151.101.76.223, 2a04:4e42:12::223
Connecting to www.python.org (www.python.org)|151.101.76.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22676538 (22M) [application/octet-stream]
Saving to: 'CustomPython.tgz'
CustomPython.tgz 100%[=============================================================>] 21.63M 25.9MB/s in 0.8s
2024-01-10 10:20:52 (25.9 MB/s) - 'CustomPython.tgz' saved [22676538/22676538]
파일이 사용자 지정 이름으로 다운로드되었는지 확인해 보겠습니다.
ls -lh
이제 디렉토리에 원래 Python-3.6.1.tgz 파일과 새 CustomPython.tgz 파일이 모두 표시됩니다.
추가 유용한 옵션
wget 옵션에 대해 배우는 동안 몇 가지 더 유용한 옵션이 있습니다.
-q(quiet): 출력을 억제하며, 스크립트에 유용합니다.-c(continue): 부분적으로 다운로드된 파일을 다시 시작합니다.--limit-rate=1m: 다운로드 속도를 제한합니다 (예: 초당 1 메가바이트).
예를 들어, 사용자 지정 이름으로 조용히 다운로드하려면 다음을 수행합니다.
wget -q -O PythonQuiet.tgz https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
이 명령은 출력을 표시하지 않지만 파일은 다운로드됩니다. 다음으로 확인할 수 있습니다.
ls -lh
이제 디렉토리에 PythonQuiet.tgz 파일도 표시됩니다.
목록에서 여러 파일 다운로드
실제 시나리오에서는 여러 파일을 다운로드해야 하는 경우가 많습니다. 각 wget 명령을 수동으로 입력하는 것은 비효율적입니다. 다행히 wget은 목록에서 여러 파일을 다운로드할 수 있으며, 이는 자동화에 완벽합니다.
URL 이 포함된 파일 생성
먼저 다운로드하려는 파일의 URL 이 포함된 텍스트 파일을 만들어 보겠습니다.
cd ~/project/download_resources
echo "https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz" > download_list.txt
echo "https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz" >> download_list.txt
echo "https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz" >> download_list.txt
이 명령에서:
- 첫 번째
echo명령은download_list.txt라는 새 파일을 만들고 첫 번째 URL 을 추가합니다. - 후속
echo명령은>>(이중 리디렉션) 을 사용하여 파일에 추가 URL 을 추가합니다.
파일의 내용이 올바른지 확인해 보겠습니다.
cat download_list.txt
각 줄에 하나의 URL 이 있는 세 개의 URL 이 표시되어야 합니다.
https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
입력 파일과 함께 wget 사용
이제 -i 옵션을 wget과 함께 사용하여 파일에서 URL 을 읽고 모든 파일을 다운로드할 수 있습니다.
wget -i download_list.txt
이 명령은 wget에게 download_list.txt에서 URL 을 읽고 각 파일을 순서대로 다운로드하도록 지시합니다. 단일 파일을 다운로드했을 때와 유사하게 각 다운로드에 대한 출력이 표시됩니다.
--2024-01-10 10:30:51-- https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
Resolving www.python.org (www.python.org)... 151.101.76.223, 2a04:4e42:12::223
Connecting to www.python.org (www.python.org)|151.101.76.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22808518 (22M) [application/octet-stream]
Saving to: 'Python-3.7.0.tgz'
Python-3.7.0.tgz 100%[=============================================================>] 21.75M 25.9MB/s in 0.8s
2024-01-10 10:30:52 (25.9 MB/s) - 'Python-3.7.0.tgz' saved [22808518/22808518]
--2024-01-10 10:30:52-- https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
...
다운로드한 파일 확인
다운로드가 완료된 후 모든 파일이 올바르게 다운로드되었는지 확인해 보겠습니다.
ls -lh Python-3.7.*
목록에서 다운로드한 세 개의 Python 3.7.x 파일이 표시되어야 합니다.
-rw-r--r-- 1 labex labex 22M Jan 10 10:30 Python-3.7.0.tgz
-rw-r--r-- 1 labex labex 22M Jan 10 10:30 Python-3.7.1.tgz
-rw-r--r-- 1 labex labex 22M Jan 10 10:31 Python-3.7.2.tgz
배치 다운로드 스크립트 생성
향후 사용을 위해 목록에서 파일을 다운로드할 수 있는 간단한 셸 스크립트를 만들어 보겠습니다. 이는 wget을 자동화에 사용하는 방법을 보여줍니다.
cd ~/project/download_resources
nano batch_download.sh
파일에 다음 내용을 입력합니다.
#!/bin/bash
## A simple script to download files from a list
if [ -f "$1" ]; then
echo "Downloading files from list: $1"
wget -i "$1"
else
echo "Error: File $1 not found"
exit 1
fi
Ctrl+O를 누른 다음 Enter를 눌러 파일을 저장하고 Ctrl+X로 종료합니다.
스크립트를 실행 가능하게 만듭니다.
chmod +x batch_download.sh
이제 이 스크립트를 사용하여 향후 모든 목록에서 파일을 다운로드할 수 있습니다.
./batch_download.sh download_list.txt
이 명령은 이전 wget -i download_list.txt 명령과 동일한 작업을 수행하지만 재사용할 수 있는 스크립트로 래핑되어 있습니다.
요약
이 랩에서는 Linux 에서 비대화형 다운로드를 위해 wget 명령을 사용하는 방법을 배웠습니다. 이제 다음 기술을 갖추게 되었습니다.
- 기본
wget명령을 사용하여 개별 파일 다운로드 -O옵션을 사용하여 사용자 지정 이름으로 다운로드한 파일 저장- URL 목록을 만들고
-i옵션을 사용하여 여러 파일을 한 번에 다운로드 - 일괄 다운로드를 위한 간단한 자동화 스크립트 생성
이러한 기술은 시스템 관리자, 개발자 및 명령줄에서 파일을 효율적으로 다운로드해야 하는 모든 Linux 사용자에게 유용합니다. 비대화형 다운로드는 자동화, 원격 서버 관리 및 그래픽 인터페이스를 사용할 수 없는 상황에 특히 유용합니다.
자체적으로 탐색할 수 있는 몇 가지 추가 wget 기능은 다음과 같습니다.
- 웹사이트 미러링을 위한
-r을 사용한 재귀적 다운로드 - 장시간 실행되는 다운로드를 위한
-b를 사용한 백그라운드 다운로드 - 보호된 리소스에 대한
--user및--password를 사용한 인증 사용 - 타임아웃, 재시도 및 기타 연결 매개변수 설정
이러한 기능을 통해 Linux 명령줄에서 다양한 다운로드 시나리오를 효율적으로 처리할 수 있습니다.



