(이것은 Linux(CentOS 8)입니다) Chapter 04. 기본 개념 및 명령어 (3)

파일 압축 및 번들

파일 압축

  • 압축 파일 확장자 xz, bz2, gz, zip, Z 등.
  • xzbz2 더 나은 압축률

파일 압축 명령

  • xz: 확장자가 xz인 파일을 압축하거나 압축 해제합니다.
    • 전) xz (파일명)
    • 전) xz -d (파일명).xz
  • bzip2: 확장자가 bz2인 파일을 압축하거나 압축 해제합니다.
    • 압축 -> bzip2 (파일명)
    • 압축 풀기 -> bzip2 -d (파일명).bz2
  • bunzip2: bzip2 -d 옵션에 해당하는 명령
  • gzip: 리뉴얼 gz압축 해제 또는 압축 해제.
    • 압축 -> gzip (파일명)
    • 압축 풀기 -> gzip -d (파일명).gz
  • gunzip: gzip -d 옵션에 해당하는 명령

번들 파일

  • Linux(Unix)에서 “파일 압축”과 “파일 번들링”은 본질적으로 별개의 프로그램입니다.
  • 파일을 바인딩하는 명령은 tar번들 파일의 확장자도 tar오전.

파일 번들 명령(tar)

  • tar: 리뉴얼 tar번들 파일을 생성하거나 .
    • 작업: c(바인드), x(언팩), t(경로 확인)
    • 옵션: f(파일), v(프로세스 보기), J(tar + xz), z(tar + gzip), j(tar + bzip2)
  • 적용 예
    • # tar cvf my.tar /etc/sysconfig/ -> 바인드
    • # tar cvfJ my.tar.xz /etc/sysconfig/ -> 번들링 + xz 압축
    • # tar xvf my.tar -> 타르 압축 풀기
    • # tar xvfJ my.tar.xz /etc/sysconfig/ -> xz 압축 풀기 + decloak tar

파일 위치 찾기

  • find (경로) (옵션) (조건) (action): 기본 파일 찾기
    • (가능성): -name, -user(소유자), -newer(이전, 이후), -perm(허용하다), -size(크기)
    • (행동): -print(기본), -exec(외부 명령 실행)
  • 적용 예
    • # find /etc -name "*.conf" -> 확장 conf파일에서 찾았습니다
    • # find /usr/bin -size +10k -size -100k -> 10k보다 크고 100k보다 작은 파일 찾기
    • # find /home -name "*.swp" -exec rm { } \; -> 확장 swp파일에서 찾아서 삭제


  • which (실행파일 이름): PATH에 지정된 디렉토리만 검색
  • whereis (실행파일 이름): 실행 파일, 소스 파일, 매뉴얼 페이지 파일 검색
  • locate (파일 이름): 파일 목록 데이터베이스에서 검색

크론과 AT

크론

  • 반복 작업이 자동으로 실행되도록 설정
  • 연결된 데몬(서비스)은 ‘crond’이고 연결된 파일은 다음과 같습니다. /etc/crontab


  • 특정 파일을 폴더에 넣으면 폴더에 따라 파일이 시간별, 일별, 주별, 월별로 자동으로 실행됩니다.
  • 적용 예
    • 01 * * * * root run-parts /etc/cron.hourly -> 매시 1분에 루트 권한으로 /etc/cron.hourly 디렉토리에서 자동으로 명령 실행
    • 02 4 * * * root run-parts /etc/cron.daily -> 루트로 매일 04:02에 /etc/cron.daily 디렉토리에서 자동으로 명령 실행
    • 03 4 * * 0 root run-parts /etc/cron.weekly -> root 권한으로 매주 일요일 04:03 /etc/cron.weekly 디렉토리에서 자동으로 명령 실행
    • 42 4 1 * * root run-parts /etc/cron.monthly -> 루트 권한으로 매월 1일 04시 42분 /etc/cron.monthly 디렉토리에서 자동으로 명령 실행
  • 매월 15일 오전 3시 1분에 cron을 연습 예제로 사용 /home 디렉토리 및 하위 디렉토리 /backup 디렉토리에 저장하는 방법을 살펴보겠습니다.
  • 첫 번째 systemctl status crond 이 명령은 cron 서비스가 현재 실행 중임을 확인했습니다.


# systemctl status crond (q 키로 종료)

  • ~ 후에 /etc/crontab 파일을 열고 다음 구문을 추가하고 저장했습니다.


# vi /etc/crontab

  • 다음에 /etc/cron.monthly 디렉토리로 이동하여 실제 백업을 수행하기 위한 실행 명령을 저장하는 스크립트를 작성하고 저장하십시오.


# vi myBackup.sh

  • 각 문장의 의미는 다음과 같습니다
    • set $(date): 현재 연도($1), 월($2), 일($3), 시($4), 분($5) 및 초($6) 가져오기
    • fname="backup-$2$3tar.xz": 파일 이름 backup-$2$3tar.xz의 형식으로 지정
      • $2와 $3는 각각 월과 일을 나타냅니다.
    • tar cfJ /backup/$fname /home: home 디렉토리와 그 하위 디렉토리는 xz로 묶이고 압축됩니다. backup 디렉토리에 저장
  • 다만 아직 해당 파일에 대한 실행 권한이 없기 때문에 다음과 같이 실행 권한을 부여했습니다.


# chmod 755 myBackup.sh

  • 실제로 backup 디렉토리 생성 systemctl restart crond 명령을 통해 cron 서비스를 다시 시작하면 위에서 작업한 구성 파일을 읽을 수 있었습니다.


  • 마지막으로 시스템 시간을 임의로 변경하여 결과를 확인하였다.

표준 시간으로 되돌리려면 ‘rdate -s time.bora.net’


2027년 1월 15일 03:00로 변경

  • 03:01임을 확인한 후, backup 폴더를 보면 아래와 같이 백업 파일이 잘 저장되어 있는 것을 확인할 수 있습니다.


에서

  • cron은 반복 작업을 예약하는 데 사용되는 반면 at은 일회성 작업을 예약하는 데 사용됩니다.
  • 적용 예
    • 예약: # at (시간)
      • 전) # at 3:00am tomorrow -> 내일 3시
      • 전) # at 11:00pm January 30 -> 1월 30일 밤 11시
      • 전) # at now + 1 hours -> 1시간 후
    • at> 명령 프롬프트에서 예약 명령 입력 후 Enter
    • 완료되면 Ctrl + D
    • 확인: # at -l
    • 해제: # atrm (작업 번호)


간단한 적용 예


기본 네트워크 개념


  • TCP/IP: 네트워크를 통한 컴퓨터 간의 통신에 가장 널리 사용되는 프로토콜 중 하나입니다.
  • 호스트 이름 및 도메인 이름
    • 호스트 이름은 각 컴퓨터에 할당된 이름입니다.
    • 도메인 이름(또는 도메인 주소)은 hanbit.co.kr같은 형식
  • IP 주소
    • 각 컴퓨터의 LAN 카드에 할당된 고유하고 겹치지 않는 주소
    • 4바이트로 구성되며 각 숫자는 0에서 255까지의 숫자입니다.
    • 예: 서버 가상 머신의 IP 주소는 192.168.111.100입니다.
  • 네트워크 주소
    • 동일한 네트워크에 속하는 공유 주소(예: 192.168.111.0)
  • 브로드캐스트 주소
    • 내부 네트워크의 모든 컴퓨터가 수신하는 주소
    • 현재 주소의 마지막 자리를 255(클래스 C)로 변경한 주소.
  • 게이트웨이, 라우터
    • 네트워크 간에 데이터를 전송하는 컴퓨터 또는 장치
    • VMware의 게이트웨이 주소는 192.168.111.2로 설정됩니다.
  • 넷마스크 및 클래스: 네트워크 크기 결정(예: 255.255.255.0 – 클래스 C)
  • 도메인 이름 시스템(DNS) 서버(= 이름 서버)의 주소입니다.
    • URL을 컴퓨터의 IP 주소로 변환하는 서버
    • 구성 파일은 /etc/resolv.conf
    • VMware의 경우 VMware는 192.168.111.2를 게이트웨이 및 DNS 서버로 설정하고 192.168.111.254를 DHCP 서버로 설정합니다.

DHCP 서버는 자동으로 IP 할당을 담당합니다.

네트워크 관련 명령어

  • nmtui
    • 대부분의 네트워크 관련 작업은 이 명령에서 수행됩니다.
      • 자동 또는 고정 IP 주소 결정
      • IP 주소, 서브넷 마스크 및 게이트웨이 정보 입력
      • DNS 정보 입력
      • 네트워크 카드 드라이버 설정
      • 네트워크 장치 설정(ens160)
    • 텍스트 기반으로 작동


X Window nmtui 설정 화면

  • systemctl <start/stop/restart/status> NetworkManager: 네트워크 설정 변경 후, 변경된 내용을 시스템에 적용하라는 명령어
  • ifup (장치 이름) 그리고 ifdown (장치 이름): 네트워크 장치를 켜거나 끄는 명령
  • ifconfig (장치 이름): 장치의 IP 주소 설정에 대한 정보 출력
  • nslookup: DNS 서버 작동 테스트 명령
  • ping (IP 주소 또는 URL): 네트워크의 컴퓨터가 응답하는지 테스트하는 명령

네트워크와 관련된 주요 파일

  • /etc/sysconfig/network: 기본적인 네트워크 정보를 담고 있는 파일
  • /etc/sysconfig/network-scripts/ifcfg-ens160: ens32 장치에 대한 모든 네트워크 정보가 포함된 파일
  • /etc/resolv.conf: DNS 서버의 정보 및 호스트 이름을 포함하는 파일
  • /etc/hosts: 현재 컴퓨터의 호스트 이름과 FQDN이 포함된 파일

네트워크 보안을 위한 SELinux

  • SELinux(Security Enhanced Linux)는 보안 취약성으로부터 Linux를 보호하기 위해 개발되었습니다.
  • 세 가지 수준: 시행, 허용, 비활성화됨
  • 구성 파일 /etc/sysconfig/selinux또는 편집 system-config-selinux 명령으로 설정
  • 작동 방식
    • “Enforce”는 시스템 보안을 손상시키는 기능을 감지하는 경우 시스템이 기능을 전혀 실행하지 못하게 합니다.
    • “허용됨”은 시스템 보안에 영향을 미치는 감지된 기능이 허용되지만 콘텐츠가 기록됨을 의미합니다.
    • “Disabled”는 SELinux를 사용하지 않습니다.