Linux 비대화형 다운로드

LinuxBeginner
지금 연습하기

소개

Linux 에서 비대화형 다운로드에 대한 초보자 랩에 오신 것을 환영합니다. 명령줄에서 파일을 효율적으로 다운로드하는 능력은 모든 Linux 사용자 또는 시스템 관리자에게 필수적인 기술입니다.

이 랩에서는 수동 개입 없이 인터넷에서 파일을 다운로드할 수 있는 강력한 유틸리티인 wget 명령을 사용하는 방법을 배우게 됩니다. 이 도구는 여러 파일을 가져오거나, 백그라운드에서 다운로드하거나, 스크립트에서 다운로드 작업을 자동화해야 할 때 특히 유용합니다.

이 랩이 끝나면 wget을 사용하여 개별 파일을 다운로드하고, 다운로드 파일의 이름을 바꾸고, 목록에서 여러 파일을 다운로드하는 방법을 이해하게 됩니다. 이 모든 작업은 그래픽 인터페이스나 대화형 프롬프트 없이 명령줄을 통해 수행됩니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 93%입니다.학습자들로부터 96%의 긍정적인 리뷰율을 받았습니다.

환경 설정 및 기본 다운로드

이 첫 번째 단계에서는 작업 디렉토리를 만들고 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.tgzwget에게 파일을 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 명령줄에서 다양한 다운로드 시나리오를 효율적으로 처리할 수 있습니다.