2026. 6. 14. 09:13ㆍ리눅스
Ⅰ. 패키지 관리
| 구분 | 설명 |
| 패키지 | 배포하기 위한 목적으로 제작된 관련있는 파일이나 프로그램 집합 |
| CentOs Linux | RedHat에서 제공하는 RPM (Redhat Package Manager) 패키지 사용 |
| rpm -qf 명령 사용하면 'nslookup', 'dig', 'host' 파일들이 'bind-utils' 패키지에서 제공하는 것 확인 가능 | |
Ⅱ. 레드햇 계열 패키지 관리
레드햇 계열 패키지 관리 |
구분 | 설명 | |
| 개념 | 레드햇 (Red Hat) 계열 리눅스는 RPM (Red Hat Package Manager) 기반의 패키지 관리 시스템 사용 |
||
| 대표 배포판 | Red Hat Enterprise Linux (RHEL), CentOS, Rocky Linux, AlmaLinux, Fedora 등 | ||
| 특징 | .rpm 확장자를 가진 RPM 패키지 파일을 사용 | ||
| 패키지의 의존성 (Dependency) 문제를 해결하기 위해 YUM, DNF와 같은 고급 관리 도구 사용 | |||
| 로컬 또는 원격 저장소 (Repositroy)를 통해 패키지 관리 가능 | |||
| 관리 도구 종류 | 종류 | 설명 | |
| RPM (기초 도구) | 패키지 설치, 제거, 정보 조회 수행 | ||
| YUM (자동화 도구) | 인터넷 저장소 기반 자동 설치 및 의존성 해결 | ||
| DNF (차세대 YUM) | YUM을 개선한 최신 패키지 관리자 (CentOS 8 이상 기본) | ||
Ⅱ - Ⅰ. RPM을 이용한 패키지 관리
RPM을 이용한 패키지 관리 |
구분 | 설명 | |
| 개념 | RPM (Red Hat Package Manager)은 레드햇 계열 리눅스의 기본 패키지 관리 도구로 패키지 설치, 업데이트, 삭제, 정보 조회를 수행함 |
||
| 특징 | .rpm 확장자의 패키지 파일 직접 관리 | ||
| 설치 시 의존성 문제를 자동으로 해결하지 않음 | |||
| 인터넷 연결 없이 로컬 환경에서도 설치 가능 | |||
| 패키지 구조 | 패키지는 프로그램 파일, 설정 파일, 스크립트, 의존성 정보 등을 포함하고 있음 | ||
| 저장 경로 | 경로 | 설명 | |
| /var/lib/rpm/ | RPM 데이터베이스 (설치 정보) 저장 위치 | ||
한계점 |
패키지 간 의존성 (Dependency)을 자동으로 해결하지 못함 | ||
| 설치 순서를 수동으로 맞춰야 함 | |||
| 해결책 | YUM 또는 DNF 사용 시 자동으로 의존성 확인 및 설치 가능 | ||
Ⅱ - Ⅱ. 주요 RPM 명령어
| 주요 RPM 명령어 | 명령어 | 설명 |
| rpm -ivh [패키지명.rpm] | 패키지 설치 (install, verbose, hash 옵션) | |
| rpm -Uvh [패키지명.rpm] | 기존 버전의 패키지를 업그레이드 | |
| rpm -e [패키지명] | 패키지 제거 (erase) | |
| rpm -qa | 설치된 전체 패키지 목록 확인 | |
| rpm -qi [패키지명] | 특정 패키지의 상세 정보 확인 | |
| rpm -ql [패키지명] | 패키지에 포함된 파일 목록 확인 | |
| rpm -qf [파일 경로] | 특정 파일이 어떤 패키지에 속하는지 확인 | |
| rpm -V [패키지명] | 설치된 패키지의 무결성 검증 |

rpm 명령을 통해 Red Hat 계열 리눅스에서 설치된 소프트웨어 패키지 관리
-q 옵션을 통해 현재 시스템에 설치된 패키지의 정보 조회
-a 옵션을 통해 시스템에 설치된 모든 패키지 나열

rpm -qa | wc -l 명령을 통해 현재 시스템에 설치된 모든 RPM 패키지의 텍스트 행의 개수 화면에 출력하여 확인

whereis nslookup 명령을 통해 nslookup 명령어가 설치된 경로 확인
rpm -qf /usr/bin/nslookup 명령을 통해 /usr/bin/nslookup 파일이 어느 RPM 패키지에 포함되어 있는지 확인
rpm -qf /usr/bin/host 명령을 통해 /usr/bin/host 파일이 어느 RPM 패키지에 포함되어 있는지 확인
rpm -qf /usr/bin/dig 명령을 통해 /usr/bin/dig 파일이 어느 RPM 패키지에 포함되어 있는지 확인

rpm -qa | grep bind 명령을 통해 시스템에 설치된 모든 RPM 패키지 중 이름에
'bind'가 포함된 패키지만 필터링하여 화면에 출력
rpm -qa | grep openssh 명령을 통해 시스템에 설치된 모든 RPM 패키지 중에
이름에 'openssh'가 포함된 패키지만 필터링하여 화면에 출력
rpm -qa openssh 명령을 통해 'openssh' 이름과 정확히 일치하는 패키지 정보 출력
rpm -qi openssh 명령을 통해 'openssh' 패키지의 상세 정보 조회

rpm -ql openssh 명령을 통해 openssh 패키지가 설치하면서 시스템에 위치시킨 모든 파일 목록 출력

rpm -ql openssh | egrep -v "/doc/|/man|/license" 명령을 통해
/doc 또는 /man 혹은 /license를 제외하고 openssh 패키지에 포함된 설치 파일 전체 목록 확인

vi .bashrc 명령을 통해 .vi 편집기 사용하여 .bashrc 파일 내용 수정
cat .bashrc 명령을 통해 수정된 .bashrc 파일 내용 확인
source .bashrc 명령을 통해 내용이 변경된 .bashrc 파일 적용
df -h 명령을 통해 /run/media/root/CentOS-Stream-9-BaseOS-x86_64 디렉터리로
이동하기 위해 /root에서 ~로 변경된 것 확인

cd /run/media/root/CentOS-Stream-9-BaseOS-x86_64 명령을 통해 /root 디렉터리에서
/run/media/root/CentOS-Stream-9-BaseOS-x86_64 디렉터리로 이동

ls 명령을 통해 /run/media/root/CentOS-Stream-9-BaseOS-x86_64 디렉터리 내에 파일 및 디렉터리 목록 확인
cd AppStream/ 명령을 통해 /run/media/root/CentOS-Stream-9-BaseOS-x86_64 디렉터리에서
AppStream/ 디렉터리로 이동
ls 명령을 통해 AppStream 디렉터리 내 파일 및 디렉터리 목록 확인
cd Packages/ 명령을 통해 AppStream 디렉터리에서 Packages 디렉터리로 이동
pwd 명령을 통해 Packages 디렉터리로 잘 이동했는지 확인

ls 명령을 통해 Packages 디렉터리 내에 파일 및 디렉터리 목록 확인

file zziplib-utils-0.13.71-12.el9.x86_64.rpm 명령을 통해
zziplib-utils-0.13.71-12.el9.x86_64.rpm 파일의 유형 분석

rpm -qa vsftpd 명령을 통해 vsftpd 패키지 나열
ls -l | grep vsftpd 명령을 통해 'vsftpd'라는 문자열이 포함된 파일만 필터링하여
현재 디렉터리의 파일 목록 자세히 출력

rpm -i vsftpd-3.0.5-6.el9.x86_64.rpm 명령을 통해 vsftpd 패키지 새로 설치
rpm -qa vsftpd 명령을 통해 vsftpd 패키지가 잘 설치되었는지 확인

rpm -ql vsftpd | egrep -v "/doc|/man" 명령을 통해 /doc 또는 /man을 제외하고,
vsftpd 패키지에 포함된 설치 파일 목록 확인

rpm -e vsftpd 명령을 통해 vsftpd 패키지 삭제
rpm -qa vsftpd 명령을 통해 vsftpd 패키지가 잘 삭제되었는지 확인
rpm -i vsftpd-3.0.5-6.el9.x86_64.rpm 명령을 통해 vsftpd 패키지 다시 설치
rpm –qa vsftpd 명령을 통해 vsftpd 패키지가 잘 설치되었는지 확인
systemctl start vsftpd 명령을 통해 vsftpd 서비스 실행
systemctl status vsftpd 명령을 통해 vsftpd 서비스가 실행되었는지 확인

systemctl stop vsftpd 명령을 통해 vsftpd 서비스 중단
systemctl status vsftpd 명령을 통해 vsftpd 서비스가 잘 중단되었는지 확인
ls –l /usr/sbin/vsftpd 명령을 통해 /usr/sbin/vsftpd 파일의 상세 정보 확인
rm –rf /usr/sbin/vsftpd 명령을 통해 /usr/sbin/vsftpd 파일 삭제
ls –l /usr/sbin/vsftpd 명령을 통해 /usr/sbin/vsftpd 파일이 잘 삭제되었는지 확인

rpm -i —replacepkgs vsftpd-3.0.5-6.el9.x86_64.rpm 명령을 통해 vsftpd 패키지 재설치
ls –l /usr/sbin/vsftpd 명령을 통해 /usr/sbin/vsftpd 파일의 상세 정보 확인

vi /etc/vsftpd/vsftpd.conf 명령을 통해 vi 편집기 사용하여 vsftpd 설정 파일 수정
echo 1234 > /etc/vsftpd/test.txt 명령을 통해 숫자 1234를 내용으로 하는
test.txt 파일을 vsftpd 설정 디렉터리에 생성
ls /etc/vsftpd 명령을 통해 vsftpd 디렉터리 내 존재하는 파일 목록을 확인하여 파일이 잘 생성되었는지 확인
rpm –e vsftpd 명령을 통해 기존에 설치된 vsftpd 패키지를 삭제하고,
실행 시 vsftpd.conf 파일을 vsftpd.conf.rpmsave 파일로 백업하도록 설정
ls /etc/vsftpd 명령을 통해 vsftpd.conf 파일이 vsftpd.conf.rpmsave 파일로 남아있는 것 확인
rpm –qa vsftpd 명령을 통해 현재 vsftpd 패키지가 남아있는지 확인하는 것을 통해
vsftpd 패키지가 잘 삭제되었는지 확인
rpm –i vsftpd-3.0.5-6.el9.x86_64.rpm 명령을 통해 특정 버전의 vsftpd 패키지를 새로 설치
ls /etc/vsftpd 명령을 통해 vsftpd 패키지가 잘 설치되었는지 확인

cat /etc/vsftpd/vsftpd.conf | head 명령을 통해 vsftpd 설정 파일 내용의 처음 몇 줄을 출력하여 확인
cp -p /etc/vsftpd/vsftpd.conf.rpmsave /etc/vsftpd/vsftpd.conf 명령을 통해 vsftpd.conf.rpmsave 파일의 권한과
타임스탬프를 유지하여 현재의 설정 파일인 vsftpd.conf로 덮어쓰도록 설정

ls -l | grep php-8.0 명령을 통해 현재 디렉터리 내에서 이름에 "php-8.0"이 포함된 파일 검색
rpm –qR 명령을 통해 해당 PHP 8.0 RPM 패키지가 의존하는 패키지 조회
rpm –i 명령을 통해 PHP 8.0 패키지 설치

rpm –qa “php*” 명령을 통해 시스템에 설치된 이름에 “php”가 포함된 모든 패키지 조회
+) rpm –i —nodeps 명령을 통해 의존성 무시하고 패키지 설치

cd 명령을 통해 Package 디렉터리에서 홈 디렉터리로 복귀
vi .bashrc 명령을 통해 vi 편집기 사용하여 .bashrc 파일의 내용 수정
cat .bashrc 명령을 통해 .bashrc 파일의 변경된 내용 확인
source .bashrc 명령을 통해 변경된 .bashrc 파일의 내용 적용하여 ~에서 /root로 변경된 것 확인
Ⅱ - Ⅲ. YUM을 이용한 패키지 관리
YUM을 이용한 패키지 관리 |
구분 | 설명 | |
| 개념 | YUM (Yellowdog Updater, Modified)은 RPM 기반 패키지의 의존성 해결, 설치, 업데이트를 자동화한 도구 |
||
| 특징 | 인터넷 연결을 통해 저장소 (Repository)에 패키지를 직접 다운로드 및 설치 | ||
| 의존성 충돌을 자동으로 해결 | |||
| 설치 후 불필요한 캐시 자동 정리 | |||
| 지원 배포판 | RHEL, CentOS, Fedora, Rocky Linux 등 | ||
| 저장소 설정 | 저장소 | 설명 | |
| /etc/yum.repos.d/*.repo | 패키지 저장소 정보 설정 파일 위치 | ||
| 캐시 위치 | 위치 | 설명 | |
| /var/cache/yum/ | 패키지 캐시 파일 저장 디렉터리 | ||
| 대체 도구 | 현재는 DNF (Dandified YUM)로 대체되어 사용 (명령어 대부분 동일) | ||
Ⅱ - Ⅳ. 주요 YUM 명령어
| YUM 명령어 | 명령어 | 설명 |
| yum search [패키지명] | 패키지 검색 | |
| yum info [패키지명] | 패키지 정보 확인 | |
| yum install [패키지명] | 패키지 설치 | |
| yum update | 모든 패키지 최신 버전으로 업데이트 | |
| yum remove [패키지명] | 패키지 제거 | |
| yum list installed | 설치된 패키지 목록 확인 | |
| yum clean all | 캐시 및 다운로드 파일 정리 |

yum clean all 명령을 통해 YUM 패키지 관리자가 기존에 저장해둔 캐시, 메타 데이터, 패키지 정보 등 깨끗하게 삭제
yum repolist 명령을 통해 현재 시스템에 등록되어 활성화된 YUM 저장소들의 목록 확인

yum remove epel-release 명령을 통해 EPEL 저장소 활성화 위해 설치한 epel-release 패키지를 종속적으로 삭제
yum repolist 명령을 통해 삭제 후 현재 활성화된 저장소 목록 확인
dnf repolist 명령을 통해 삭제 후 현재 활성화된 저장소 목록 확인
ls /run/media/root/CentOS-Stream-9-BaseOS-x86_64/ 명령을 통해 CentOS 설치 ISO나
미디어가 마운트된 경로를 탐색하여 내부 구성 파일과 디렉터리 확인

rpm –qa vsftpd 명령을 통해 시스템에 설치된 vsftpd 패키지 목록 조회
rpm –e vsftpd 명령을 통해 기존에 설치된 vsftpd 패키지를 삭제하고,
실행 시 vsftpd.conf 파일을 vsftpd.conf.rpmsave 파일로 백업하도록 설정
yum –qa vsftpd 명령을 통해 vsftpd 패키지가 삭제된 것 확인
yum list vsftpd 명령을 통해 현재 저장소에서 설치 가능한 vsftpd 패키지 정보 확인
yum info vsftpd 명령을 통해 vsftpd 패키지의 상세 정보 확인

yum –y install vsftpd 명령을 통해 vsftpd 패키지를 자동 확인 및 의존성 해결 후 설치
yum list vsftpd 명령을 통해 시스템에 설치된 vsftpd 패키지 버전과
저장소 정보를 확인하여 vsftpd 패키지가 잘 설치되었는지 확인
rpm –qa vsftpd 명령을 통해 현재 시스템에 설치된 vsftpd 패키지가 맞는지 다시 확인

yum list openssh 명령을 통해 openssh 패키지 목록을 확인하여 설치 여부 조회
yum –y erase vsftpd 명령을 통해 vsftpd 패키지를 자동 확인 및 의존성 해결 후 yum 명령어로도 삭제 가능
Ⅱ - Ⅴ. DNF를 이용한 패키지 관리
DNF를 이용한 패키지 관리 |
구분 | 설명 | |
| 개념 | DNF (Dandified YUM)은 YUM의 차세대 버전으로 RPM 패키지 기반의 시스템을 보다 빠르고 효율적으로 관리하기 위해 개발된 패키지 관리자 |
||
| 역할 | 패키지의 설치, 업데이트, 삭제, 검색, 의존성 해결 자동화 | ||
| YUM의 구조를 개선하여 속도, 성능, 안정성 향상 | |||
| Python 3 기반으로 개발되어 향후 Red Hat 계열 리눅스의 표준 관리 도구로 사용됨 | |||
| 지원 배포판 | CentOS 8 이상, RHEL 8 이상, Fedora, Rocky Linux, AlmaLinux 등 | ||
| 패키지 형식 | .rpm (Red Hat Package Manager 파일 형식 동일) | ||
| 저장소 경로 | 경로 | 설명 | |
| /etc/yum.repos.d/ | DNF가 참조하는 저장소 정보 파일 위치 | ||
| 캐시 경로 | 경로 | 설명 | |
| /var/cache/dnf/ | 다운로드된 패키지 캐시 저장 경로 | ||
YUM과의 차이점 |
DNF는 YUM 대비 더 빠른 의존성 계산 알고리즘 사용 | ||
| 메모리 사용량 감소 및 멀티 스레드 다운로드 지원 | |||
| Python 3 기반으로 구조 개선 및 유지보수 용이 | |||
| YUM 명령어 대부분과 완벽 호환 | |||
| 추가 기능 | 기능 | 설명 | |
| dnf history undo | 특정 설치 / 삭제 작업을 되돌리기 | ||
| dnf repolist | 현재 활성화된 저장소 목록 확인 | ||
| dnf grouplist / dnf groupinstall | 패키지 그룹 단위 설치 / 제거 가능 | ||
Ⅱ - Ⅵ. 주요 DNF 명령어
| DNF 명령어 | 명령어 | 설명 |
| dnf search [패키지명] | 저장소에서 패키지 검색 | |
| dnf info [패키지명] | 패키지의 상세 정보 확인 | |
| dnf install [패키지명] | 새로운 패키지 설치 | |
| dnf update | 시스템 전체 패키지를 최신 버전으로 업데이트 | |
| dnf upgrade | 커널 포함 전체 패키지 업그레이드 | |
| dnf remove [패키지명] | 설치된 패키지 제거 | |
| dnf autoremove | 더 이상 필요 없는 의존성 패키지 자동 삭제 | |
| dnf list installed | 현재 설치된 패키지 목록 출력 | |
| dnf clean all | 캐시 파일 및 임시 데이터 삭제 | |
| dnf history | 설치 / 삭제 등 패키지 작업 이력 확인 | |
| dnf provides [파일명] | 특정 파일을 제공하는 패키지 검색 |

dnf –y install vsftpd 명령을 통해 vsftpd 패키지를 자동 확인 및 의존성 해결 후 dnf 명령어로도 설치 가능

dnf –y erase vsftpd 명령을 통해 vsftpd 패키지를 자동 확인 및 의존성 해결 후 dnf 명령어로도 삭제 가능

yum –y install vsftpd 명령을 통해 vsftpd 패키지를 자동 확인 및 의존성 해결 후 설치
ls –l /usr/sbin/vsftpd 명령을 통해 vsftpd 실행 파일의 정보 확인
rm –rf /usr/sbin/vsftpd 명령을 통해 vsftpd 실행 파일 강제로 삭제
ls /usr/sbin/vsftpd 명령을 통해 vsftpd 실행 파일이 잘 삭제되었는지 확인
yum –y reinstall vsftpd 명령을 통해 vsftpd 패키지 다시 설치

yum –y erase vsftpd 명령을 통해 vsftpd 패키지를 자동 확인 및 의존성 해결 후 yum 명령어로도 삭제 가능

yum install php 명령을 통해 의존성 해결 후, PHP 패키지 설치

yum erase php 명령을 통해 의존성 해결 후, PHP 패키지 삭제

yum check-update 명령을 통해 사용 가능한 업데이트 패키지 목록 확인 후,
시스템에 설치된 각 패키지의 최신 버전 확인

yum list openssh 명령을 통해 시스템에 설치된 OpenSSH 패키지의 버전과 저장소 정보 조회
yum list httpd 명령을 통해 시스템에 설치된 HTTPD 패키지의 버전과 저장소 정보 조회
+) yum update – 리눅스에서 사용되는 패키지 관리 도구인 YUM을 통해 설치된 패키지들을 최신 버전으로 업데이트

mkdir –p yumdownload 명령을 통해 현재 디렉터리에 yumdownload라는 디렉터리 생성
(-p 옵션으로 인해 상위 디렉터리가 없을 경우, 함께 생성)
cd yumdownload/ 명령을 통해 생성한 yumdownload 디렉터리로 이동
yum download php 명령을 통해 PHP 패키지를 다운로드만 하고, 설치는 하지 않음
ls –l 명령을 통해 현재 디렉터리 내에 다운로드된 패키지 파일의 목록과 상세 정보 확인

rm –rf 명령을 통해 이미 다운로드된 php 패키지 파일 삭제
yum –y install php —downloadonly 명령을 통해 PHP 패키지를 설치하되,
실제 설치는 하지 않고 패키지 파일만 다운로드

ls –l /var/cache/dnf/appstream 명령을 통해
/var/cache/dnf/appstream 디렉터리 내 파일 및 디렉터리의 상세한 정보 확인
ls –l /var/cache/dnf/appstream-831abc7e9d6a1a72/ 명령을 통해
appstream-831abc7e9d6a1a72 디렉터리 안의 내용 자세히 확인
ls –l /var/cache/dnf/appstream-831abc7e9d6a1a72/packages/ 명령을 통해
packages 디렉터리 내에 내용 상세히 조회

yum clean packages 명령을 통해 YUM 또는 DNF 패키지 관리자가 저장해둔 패키지 파일의 캐시 삭제
ls –l /var/cache/dnf/appstream-831abc7e9d6a1a72/packages/ 명령을 통해 잘 삭제되었는지 확인

yum -y install php —downloadonly —downloaddir=. 명령을 통해
PHP 패키지와 의존성 패키지들을 설치하지 않고, 모두 현재 디렉터리에 다운로드만 함

ls –l 명령을 통해 php 패키지가 잘 설치되었는지 확인하고, 파일의 상세 정보 확인

yum clean packages 명령을 통해 YUM 또는 DNF 패키지 관리자가 저장해둔 패키지 파일의 캐시 삭제
ls –l /var/cache/dnf/appstream-831abc7e9d6a1a72/packages/ 명령을 통해 잘 삭제되었는지 확인
yum -y install php —downloadonly —downloaddir=. 명령을 통해
PHP 패키지와 의존성 패키지들을 설치하지 않고, 모두 현재 디렉터리에 다운로드만 함

rm –rf *.rpm 명령을 통해 현재 디렉터리 내에 확장자가 .rpm인 모든 파일을 강제로 재귀 삭제
ls 명령을 통해 잘 삭제되었는지 확인
cd 명령을 통해 yumdownload 디렉터리에서 홈 디렉터리로 복귀

ls –l /var/cache/dnf/appstream-831abc7e9d6a1a72/ 명령을 통해
appstream-831abc7e9d6a1a72 디렉터리 안의 내용 자세히 확인
ls –l /var/cache/dnf/appstream-831abc7e9d6a1a72/packages/ 명령을 통해
packages 디렉터리 내에 내용 상세히 조회

두 번째 Client1에서 yum install php 명령을 통해 의존성 해결 후, PHP 패키지 설치

첫 번째 Client1에서 두 번째 Client1의 PHP 패키지가 설치됨과 동시에 삭제되는 것 확인

yum –y erase php 명령을 통해 의존성 해결 후, PHP 패키지 삭제

ls –l /etc/yum.repos.d/ 명령을 통해 YUM 패키지 관리자가 사용할
소프트웨어 저장소 구성 파일들을 관리하는 디렉터리에 관한 정보를 자세하게 확인
cat /etc/yum.repos.d/centos.repo 명령을 통해 centos.repo 파일의 내용 확인

yum clean all 명령을 통해 시스템에 저장되어 있던 모든 YUM / DNF 캐시 파일 완전히 삭제
yum –y install vsftpd 명령을 통해 vsftpd 패키지를 의존성 문제 해결하여 자동으로 설치
ls –l /var/cache/dnf/appstream-831abc7e9d6a1a72 명령을 통해
DNF 캐시 중 AppStream 저장소 관련 디렉터리 내용 상세히 조회

cat /var/cache/dnf/appstream-831abc7e9d6a1a72/metalink.xml 명령을 통해 metalink.xml 파일의 내용 확인

yum –y install epel-release 명령을 통해 epel-release와 epel-nest-release 두 패키지 설치

yum install htop 명령을 통해 htop이라는 시스템 모니터링 도구 설치
yum repolist 명령을 통해 YUM 저장소 목록 확인하여 잘 설치되었는지 확인
Ⅲ. 파일 다운로드
파일 다운로드 |
구분 | 설명 | |
| 개념 | 원격 서버에 저장된 데이터를 로컬 시스템으로 전송받는 과정 | ||
| 목적 | 외부 서버나 인터넷에 있는 파일을 로컬 환경에 저장 | ||
| 소프트웨어 설치, 패키지 업데이트, 데이터 백업 등 다양한 작업에 활용 | |||
| 전송 방식 | 전송 방식 | 설명 | |
| HTTP / HTTPS | 웹 서버를 통해 다운로드 (ex. wget, curl) |
||
| FTP (File Transfer Protocol) |
FTP 서버에서 파일을 내려받을 때 사용 | ||
| SCP (Secure Copy) SFTP |
SSH 기반으로 보안이 강화된 파일 전송 방식 | ||
| Git | 원격 저장소의 버전 관리된 프로젝트 복제 (Clone) | ||
| 주요 명령어 |
wget | ||
| curl | |||
| scp | |||
| git clone | |||
| 주의사항 | 다운로드 경로에 쓰기 권한이 없는 경우 실패할 수 있음 | ||
| wget 또는 curl이 설치되어 있지 않으면 패키지 매니저 (yum, apt)로 설치 필요 | |||
| 대용량 파일 다운로드 시 네트워크 속도 및 저장 공간 확인 필수 | |||
| 추가 팁 | 항목 | 설명 | |
| 다운로드 중 속도 확인 | wget --show-progress | ||
| 백그라운드 다운로드 | wget -b [URL] | ||
| 다중 파일 다운로드 | 여러 URL을 리스트 파일에 저장 후 wget -i list.txt | ||
| 사용 예시 | 웹에서 파일 자동 설치 스크립트 다운로드 | ||
| 리눅스 패키지 파일이나 백업 데이터 수집 | |||
Ⅲ - Ⅰ. 주요 파일 다운로드 명령어
| 파일 다운로드 명령어 |
명령어 | 설명 | 주요 옵션 | 설명 |
| wget | 웹 서버 (HTTP / HTTPS,FTP)에서 파일을 다운로드할 때 사용 |
-O [파일명] | 저장 파일 이름 지정 | |
| -c | 중단된 다운로드 이어받기 | |||
| -r | 하위 디렉터리까지 재귀 다운로드 | |||
| curl | 다양한 프로토콜 (HTTP, FTP 등)을 지원하는 범용 데이터 전송 도구 |
-O | 원본 파일명 유지 저장 | |
| -o [파일명] | 저장 파일명 지정 | |||
| -L | 리다이렉션 자동 추적 | |||
| 명령어 | 설명 | 형태 | ||
| scp | SSH (보안 연결)를 통해 원격 서버의 파일을 로컬로 복사 |
scp [user]@[host] : [파일경로] [로컬경로] | ||
| git clone | Git 원격 저장소 (repository)의 전체 파일과 버전 이력을 로컬로 복제 |
git clone [저장소 URL] | ||
| git clone [URL] [디렉터리명] | ||||
Ⅲ - Ⅱ. wget
- URL를 지정하여 파일 다운로드 할 때 사용

wget 명령을 통해 웹에서 특정 파일 다운로드

wget -q 명령을 통해 조용한 모드로 Apache Tomcat 9.0.109 버전의 압축 파일 다운로드
Ⅲ - Ⅲ. git
- git 패키지 설치하면 깃허브 사이트에 있는 소스 코드와 연동 가능
- 작업 디렉터리와 파일 다운로드 가능

yum –y install git 명령을 통해 git 패키지 설치

git clone 명령을 통해 GitHub에 있는 linux 리포지터리를 로컬 시스템으로 복제
ls 명령을 통해 잘 복제되었는지 확인
ls linux/ 명령을 통해 linux 디렉터리 내 파일 및 디렉터리 목록 확인
Ⅲ - Ⅳ. curl
- HTTP 요청을 실시하거나 파일을 다운로드할 때 사용

curl http://www.google.com 명령을 통해 지정한 URL의 웹 페이지 내용을 터미널 화면에 출력

curl —head http://www.google.com 명령을 통해 웹 페이지의 본문 없이 HTTP 응답의 헤더 정보만 받아오도록 함

GitHub의 ncs10322/linux 리포지터리 안 main 브랜치에 있는 README.md 파일을 로컬에
README.md 이름으로 저장하고, 다운로드 진행 상황이 표시되도록 설정
ls 명령을 통해 파일이 잘 생성되었는지 확인
Ⅳ. 파일 업로드
파일 업로드 |
구분 | 설명 | |
| 개념 | 로컬 시스템에서 원격 서버로 데이터를 전송하는 과정 | ||
| 목적 | 서버에 데이터, 소스 코드, 설정 파일 등을 전송하거나 백업 | ||
| 협업 중인 원격 저장소 (Git 등)에 변경 내용 업로드 | |||
| 웹서버, 클라우드, 리눅스 서버 관리 시 자주 사용 | |||
| 전송 방식 | 전송 방식 | 설명 | |
| SCP / SFTP | SSH 기반의 보안 전송 방식 | ||
| RSYNC | 대용량 또는 변경 파일만 효율적으로 동기화 | ||
| GIT PUSH | 버전 관리 저장소 (GitHub, GitLab 등)로 코드 업로드 | ||
Ⅳ - Ⅰ. 주요 파일 업로드 명령어
| 파일 업로드 명령어 |
명령어 | 설명 | 주요 옵션 | 설명 |
| scp | SSH 프로토콜을 이용해 파일 또는 디렉터리를 원격 서버로 복사 |
-r | 디렉터리 단위 업로드 | |
| -P [포트 번호] | SSH 포트 지정 | |||
| sftp | SSH 기반의 대화형 (Interactive) 파일 전송 도구 |
put [파일명] | 파일 업로드 | |
| mput [파일들] | 여러 파일 업로드 | |||
| rsync | 원격 서버와 파일 / 디렉터리를 동기화 (변경된 파일만 전송 -> 효율적) |
-avz | 아카이브, 압축, 전송 옵션 | |
| --delete | 원격과 동일하게 맞춤 (삭제 포함) |
|||
| git push | Git 원격 저장소에 로컬 커밋 업로드 (반영) |
-u origin [브랜치명] | 원격 브랜치 연결 및 업로드 |
Ⅴ. 데비안 계열 패키지 관리
데비안 계열 패키지 관리 |
구분 | 설명 | |
| 개념 | 데비안 (Debian) 계열 리눅스는 APT (Advanced Package Tool) 기반의 패키지 관리 시스템 사용 | ||
| 대표 배포판 | Ubuntu, Linux, Mint, Kali Linux 등 대부분의 데비안 계열 리눅스에서 동일한 패키지 관리 구조 사용 | ||
| 특징 | .deb 확장자를 사용하는 DEB 패키지 기반 | ||
| 의존성 (Dependency)을 자동으로 해결하여 설치 | |||
| 원격 저장소 (Repository)에 패키지 검색, 설치, 업데이트, 제거 가능 | |||
| 관련 디렉터리 | 디렉터리 | 설명 | |
| /etc/apt/sources.list | 패키지 저장소 (URL) 정보 관리 | ||
| /var/cache/apt/archives | 다운로드된 패키지 저장 경로 | ||
Ⅴ - Ⅰ. 주요 패키지 관리 명령어
| 패키지 관리 명령어 | 명령어 | 설명 |
| apt update | 패키지 목록을 최신 상태로 갱신 | |
| apt upgrade | 설치된 패키지를 최신 버전으로 업그레이드 | |
| apt install | 새로운 패키지 설치 | |
| apt remove | 패키지 제거 (설정 파일 유지) | |
| apt purge | 패키지 및 설정 파일 완전 삭제 | |
| apt autoremove | 사용하지 않는 의존성 패키지 자동 제거 | |
| dpkg -l | 설치된 패키지 목록 확인 | |
| dpkg -i [파일명.deb] | 로컬 .deb 파일 직접 설치 |

yum –y install yum-utils 명령을 통해 YUM 패키지 관리 도구를 보조하는 유틸리티 모음인 yum-utils 설치

yum-config-manager —add-repo https://download.docker.com/linux/centos/docker-ce.repo 명령을 통해
Docker의 CentOS용 저장소 주소를 시스템에 추가
yum repolist 명령을 시스템에 잘 추가되었는지 확인

curl -fsSL https://get.docker.com –o get-docker.sh 명령을 통해 Docker 설치 스크립트를
조용히, 실패 시 종료, SSL 사용, 위치 추적 옵션과 함께 받아 get-docker.sh라는 이름으로 저장
ls 명령을 통해 잘 다운로드 되었는지 확인

sh get-docker.sh 명령을 통해 Docker 공식 설치 스크립트 실행

systemctl start docker 명령을 통해 Docker 시스템 구동
systemctl status docker 명령을 통해 Docker 시스템의 현재 상황을 실시간으로 확인

docker search debian 명령을 통해 Debian 이미지와 관련된 것 검색

# testos 컨테이너 생성 및 실행
docker cocntainer run --name testos debian 명령을 통해 Debian 이미지 사용하여 testos 컨테이너 생성 및 실행
-d 옵션을 통해 testos 컨테이너를 백그라운드로 구동
-it 옵션을 통해 testos 컨테이너 내부로 직접 접근할 수 있는 쉘을 실행하도록 설정
docker container ls –a 명령을 통해 컨테이너가 잘 생성되었는지 확인
# testos 컨테이너 내부 동작
docker container exec testos 명령을 통해 testos 컨테이너 내부로 진입
-it /bin/bash 옵션을 통해 testos 컨테이너 내부로 직접 접근할 수 있는 bash 쉘을 실행하도록 설정

cat /etc/os-release 명령을 통해 /etc/os-release 파일의 내용 확인

apt-get update 명령을 통해 Debian 저장소에서 패키지 리스트를 최신으로 갱신
apt-get upgrade 명령을 통해 시스템에 설치된 패키지를 가능한 최신 버전으로 업그레이드

apt –y install net-tools 명령을 통해 net-tools 패키지 설치

dpkg –l net-tools 명령을 통해 시스템에 net-tools 패키지가 설치되어 있는지, 설치 상태 및 버전 확인
dpkg –L net-tools | egrep –v “/doc|/man” 명령을 통해 net-tools 패키지가 설치하면서
생성한 파일들의 전체 목록 중 /doc, /man을 제외하고 출력

apt –y install iproute2 명령을 통해 iproute2 패키지 설치

dpkg –l iproute2 명령을 통해 시스템에 iproute2 패키지가 설치되어 있는지, 설치 상태 및 버전 확인
dpkg –L iproute2 | egrep –v 명령을 통해 iproute2 패키지가 설치하면서 생성한 파일들의 전체 목록 출력
dpkg –L iproute2 | egrep –v “/doc|/man” 명령을 통해 iproute2 패키지가 설치하면서
생성한 파일들의 전체 목록 중 /doc, /man을 제외하고 출력

ip route 명령을 통해 명령어가 잘 실행되는지 확인
ping –c 3 8.8.8.8 명령을 통해 구글 공용 DNS 서버로 3회의 ping 테스트 시도했지만 오류 발생
apt –y install iputils-ping 명령을 통해 ping 명령어를 제공하는 iputils-ping 패키지 설치

dpkg –l iputils-ping 명령을 통해 iputils-ping 패키지가 설치되어 있는지, 설치 상태 및 버전 확인
ping –c 3 8.8.8.8 명령을 통해 ping 명령이 잘 실행되는지 확인

nslookup www.google.com 명령을 통해 구글 DNS 조회하고자 했지만 오류 발생
apt –y install bind9-dnsutils 명령을 통해 nslookup 명령어를 포함하는
DNS 유틸리티 모음인 bind9-dnsutils 패키지 설치

dpkg –l bind9-dnsutils 명령을 통해 bind9-dnsutils 패키지가 설치되어 있는지, 설치 상태 및 버전 확인
nslookup www.google.com 명령을 통해 www.google.com 도메인의 DNS 정보 조회

exit 명령을 통해 testos 컨테이너 bash 쉘에서 나옴
# testos 컨테이너 삭제
docker container rm –f testos 명령을 통해 testos 컨테이너 삭제
docker container ls –a 명령을 통해 컨테이너가 잘 삭제되었는지 확인

# testos 컨테이너 생성 및 실행
docker container run --name testos ubuntu 명령을 통해 Ubuntu 이미지 사용하여 testos 컨테이너 생성 및 실행
-d 옵션을 통해 testos 컨테이너 백그라운드로 구동
-it 옵션을 통해 testos 컨테이너 내부로 직접 접근할 수 있는 쉘을 실행하도록 설정
docker container ls –a 명령을 통해 컨테이너가 잘 생성되었는지 확인
# testos 컨테이너 내부 동작
docker container exec testos /bin/bash 명령을 통해 testos 컨테이너 내부로 진입
-it /bin/bash 옵션을 통해 testos 컨테이너 내부로 직접 접근할 수 있는 bash 쉘을 실행하도록 설정

cat /etc/os-release 명령을 통해 /etc/os-release 파일의 내용 확인
apt update 명령을 통해 패키지를 가장 최신의 버전으로 업데이트

ip route 명령을 통해 패키지가 설치되지 않았음을 확인
apt –y install iproute2 명령을 통해 ip route 명령어를 포함하는 iproute2 패키지 설치

ip route 명령을 통해 iproute2 패키지가 잘 설치되었는지 확인

nslookup www.google.com 명령을 통해 bind9-dnsutils 패키지 있음을 확인
curl –I http://www,google.com 명령을 통해 curl 패키지가 없다는 것 확인

apt –y install curl 명령을 통해 curl 패키지 설치

curl –I http://www.google.com 명령을 통해 curl 패키지가 잘 설치되었는지 확인

exit 명령을 통해 testos 컨테이너 내부 bash 쉘에서 나옴
# testos 컨테이너 삭제
docker container rm –f testos 명령을 통해 testos 컨테이너 삭제
docker container ls –a 명령을 통해 컨테이너가 잘 삭제되었는지 확인

docker search rocky 명령을 통해 Rocky 관련 파일 검색

# testos 컨테이너 생성 및 실행
docker container run --name tetsos rockylinux:9 명령을 통해
rockylinux:9 이미지 사용하여 testos 컨테이너 생성 및 실행
-d 옵션을 통해 testos 컨테이너를 백그라운드로 구동
-it 옵션을 통해 testos 컨테이너 내부로 직접 접근할 수 있는 쉘을 실행하도록 설정
docker container ls –a 명령을 통해 컨테이너가 잘 생성되었는지 확인
# testos 컨테이너 내부 동작
docker container exec testos 명령을 통해 testos 컨테이너 내부로 진입
-it /bin/bash 옵션을 통해 testos 컨테이너 내부로 직접 접근할 수 있는 bash 쉘을 실행하도록 설정

cat /etc/os-release 명령을 통해 /etc/os-release 파일의 내용 확인

yum –y install vsftpd 명령을 통해 vsftpd 패키지 설치

rpm –qa vsftpd 명령을 통해 vsftpd 패키지가 잘 설치되었는지 확인
exit 명령을 통해 testos 컨테이너의 bash 쉘에서 나옴

# testos 컨테이너 삭제
docker container rm –f testos 명령을 통해 testos 컨테이너 삭제
docker container ls –a 명령을 통해 컨테이너가 잘 삭제되었는지 확인
init 0 명령을 통해 Client1 접속 종료
'리눅스' 카테고리의 다른 글
| Linux 스케줄링 관리 (0) | 2026.06.14 |
|---|---|
| Linux 백업 관리 (0) | 2026.06.14 |
| Linux RAID 디스크 구성 (0) | 2026.06.14 |
| Linux LVM 디스크 구성 (0) | 2026.06.13 |
| Linux 파일 시스템 생성 및 마운트 (0) | 2026.06.13 |