땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • I
  • 이것이 리눅스다 with Rocky Linux9
  • E
  • D
  • ㅗ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

리눅스 네트워크 관련 개념 & 명령어 정리
OS/Linux

리눅스 네트워크 관련 개념 & 명령어 정리

2024. 5. 15. 12:19

파일의  압축과 묶기

파일 압축

  • 압축 파일 확장명은 xz, bz2, gz, zip, Z 등
  • xz나 bz2 압축률이 더 좋음

 

파일 압축 관련 명령

  • xz: 확장명 xz로 압축을 하거나 풀어준다.
    • ex) xz [파일명]
    • ex) xz -d [파일명].xz
  • bzip2: 확장명 bz2로 압축을 하거나 풀어준다.
    • 압축 -> bzip2 [파일명]
    • 압축 풀기 -> bzip2 -d [파일명].bz2
  • bunzip2: bzip2 -d 옵션과 동일한 명령어
  • gzip: 확장명 gz로 압축을 풀거나 풀어준다.
    • 압축 -> gzip [파일명]
    • 압축 풀기 -> gzip -d [파일명].gz
  • gunzip: gzip -d 옵션과 동일한 명령어

 

파일 묶기

  • 리눅스(유닉스)에서는 '파일 압축'과 '파일 묶기'는 원칙적으로 별개의 프로그램으로 수행한다.
  • 파일 묶기의 명령어는 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 풀기
    • # tar xvfJ my.tar.xz /etc/sysconfig/ -> xz 압축 해제 + tar 풀기

파일 위치 검색

  • find [경로] [옵션] [조건] [action]: 기본 파일 찾기
    • [옵션]: -name, -user(소유자), -newer(전, 후), -perm(허가권), -size(크기)
    • [action]: -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 [실행파일 이름]: 실행 파일, 소스, man 페이지 파일까지 검색
  • locate [파일 이름]: 파일 목록 데이터베이스에서 검색

CRON과 AT

cron

  • 주기적으로 반복되는 일을 자동으로 실행될 수 있도록 설정
  • 관련된 데몬(서비스)은 'crond', 관련 파일은 /etc/crontab

  • 해당 폴더 안에 특정 파일을 넣어놓으면 해당 파일들이 폴더에 따라 시간별, 일별, 주별, 월별로 자동 실행됨
  • 사용 예
    • 01 * * * * root run-parts /etc/cron.hourly -> root 권한으로, 매시간 1분에 /etc/cron.hourly 디렉터리 안에 있는 명령들을 자동으로 실행
    • 02 4 * * * root run-parts /etc/cron.daily -> root 권한으로, 매일 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 -> root 권한으로, 매월 1일 04시 42분에 /etc/cron.monthly 디렉터리 안에 있는 명령들을 자동으로 실행
  • 실습 예제로 cron을 활용하여 매월 15일 새벽 3시 1분에 /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시로 변경

  • 이후 03시 1분이 된 것을 확인한 후 backup 폴더를 살펴보면 아래와 같이 백업 파일이 잘 저장된 것을 확인할 수 있다.

 

at

  • cron은 주기적으로 반복되는 작업을 예약하는 것이지만, at는 일회성 작업을 예약할 때 사용
  • 사용 예
    • 예약: # at [시간]
      • ex) # at 3:00am tomorrow -> 내일 새벽 3시
      • ex) # at 11:00pm January 30 -> 1월 30일 오후 11시
      • ex) # at now + 1 hours -> 1시간 후
    • at> 프롬프트에 예약 명령어 입력 후 Enter
    • 완료되면 Ctrl + D
    • 확인: # at -l
    • 취소: # atrm [작업 번호]

간단한 at 사용 예


네트워크 관련 필수 개념

  • TCP/IP: 컴퓨터끼리 네트워크 상으로 의사소통을 하는 프로토콜 중 가장 널리 사용되는 프로토콜의 한 종류
  • 호스트 이름(Hostname)과 도메인 이름(Domain name)
    • 호스트 이름은 각각의 컴퓨터에 지정된 이름
    • 도메인 이름(또는 도메인 주소)은 hanbit.co.kr과 같은 형식
  • IP 주소
    • 각 컴퓨터의 랜카드에 부여되는 중복되지 않는 유일한 주소
    • 4바이트로 이루어져 있으며, 각 자리는 0~255까지의 숫자
    • ex) Server 가상머신의 IP 주소는 192.168.111.100
  • 네트워크 주소
    • 같은 네트워크에 속해 있는 공통된 주소(예: 192.168.111.0)
  • 브로드캐스트(Broadcast) 주소
    • 내부 네트워크의 모든 컴퓨터가 듣게 되는 주소
    • 현재 주소의 제일 끝자리를 255로 바꾼 주소(C 클래스)
  • 게이트웨이(Gateway), 라우터(Router)
    • 네트워크 간에 데이터를 전송하는 컴퓨터 또는 장비
    • VMware의 게이트웨이 주소는 192.168.111.2로 고정
  • 넷마스크(Netmask) & 클래스(Class): 네트워크의 규모를 결정(예: 255.255.255.0 - C 클래스)
  • DNS(Domain Name System) 서버(= 네임 서버) 주소
    • URL을 해당 컴퓨터의 IP 주소로 변환해주는 서버
    • 설정 파일은 /etc/resolv.conf
    • VMware를 사용하면 VMware가 192.168.111.2번을 게이트웨이 및 DNS 서버로, 192.168.111.254를 DHCP 서버로 설정함

DHCP 서버는 자동으로 IP를 할당하는 역할을 수행

 

네트워크 관련 명령어

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

X윈도우 nmtui 설정 화면

  • systemctl <start/stop/restart/status> NetworkManager: 네트워크의 설정을 변경한 후에, 변경된 내용을 시스템에 적용시키는 명령어
  • ifup [장치 이름] 및 ifdown [장치 이름]: 네트워크 장치를 On 또는 Off 시키는 명령어
  • 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)는 보안에 취약한 리눅스를 보호하기 위해 탄생
  • 강제(Enforcing), 허용(Permissive), 비활성(Disabled) 세 가지 레벨
  • 설정 파일인 /etc/sysconfig/selinux를 편집하거나, system-config-selinux 명령으로 설정
  • 작동 방식
    • '강제(Enforcing)'는 시스템 보안에 영향을 미치는 기능이 감지되면 아예 그 기능이 작동되지 않도록 시스템에서 막음
    • '허용(Permissive)'은 시스템 보안에 영향을 미치는 기능이 감지되면 허용은 되지만 그 내용이 로그에 남음
    • '비활성(Disabled)'은 SELinux를 사용하지 않음

'OS > Linux' 카테고리의 다른 글

리눅스 기초  (0) 2024.04.17
    'OS/Linux' 카테고리의 다른 글
    • 리눅스 기초
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바