리눅스

[Linux] 4주차 수업 정리 (디스크 쿼터, 백업, 방화벽, 쉘 스크립트)

palantirops 2026. 2. 3. 14:55

1. 디스크 할당량(Quota) 설정

핵심 개념

  • Soft Limit: 경고 지점 (초과 시 유예기간 동안 사용 가능)
  • Hard Limit: 절대 한계선 (초과 시 즉시 쓰기 금지)
  • Grace Period: Soft Limit 초과 시 주어지는 유예 기간

필수 명령어

# 쿼터 설정 (vi 편집기로)
edquota -u user2

# 명령어로 즉시 설정 (soft=500KB, hard=600KB)
setquota -u user2 500 600 0 0 /mp3

# 전체 쿼터 현황 보기
repquota -au

# 특정 사용자 쿼터 확인
quota -u user2

# 쿼터 테스트 (120MB 파일 생성 시도)
dd if=/dev/zero of=testfile bs=1M count=120

권한 문제 해결

# SELinux 임시 비활성화
setenforce 0

# 디렉토리 소유권 변경
chown user2:user2 /mp3
chmod 700 /mp3

2. 파일 압축 및 아카이브

tar 명령어 (필수!)

# 파일 묶기
tar cvf archive.tar file*

# gzip 압축까지 동시에 (가장 많이 씀!)
tar cvfz archive.tar.gz file*

# bzip2 압축 (압축률 높음)
tar cvfj archive.tar.bz2 file*

# 압축 풀기
tar xvfz archive.tar.gz -C /restore

주요 옵션

옵션 의미 설명

c Create 새 아카이브 생성
x eXtract 압축 풀기
v Verbose 과정 출력
f File 파일명 지정 (필수)
z gZip gzip 압축
j bZip2 bzip2 압축
-C Change 압축 해제 위치

압축 도구 비교

# gzip (빠름, 보통 압축률)
gzip file.tar

# bzip2 (느림, 높은 압축률)
bzip2 file.tar

# zip (호환성 좋음)
zip archive.zip files*
unzip -l archive.zip  # 내용 확인

3. Apache 웹서버 소스 설치

# 1. 다운로드 및 압축 해제
wget https://dlcdn.apache.org/httpd/httpd-2.4.66.tar.bz2
tar xfj httpd-2.4.66.tar.bz2
cd httpd-2.4.66

# 2. 필수 패키지 설치
dnf install -y apr-devel apr-util-devel pcre-devel gcc make

# 3. 컴파일 및 설치
./configure --prefix=/usr/local/apache2
make
sudo make install

# 4. 서버 시작
cd /usr/local/apache2/bin
./apachectl start

# 5. 부팅 시 자동 시작 설정 (systemd)
systemctl enable httpd

4. 백업 전략

증분 백업 (변경된 것만 저장)

# 전체 백업
tar -czg backup/backup.snar -f backup_full.tar.gz /root/lab/origin/

# 증분 백업 (이후 변경분만)
tar -czg backup/backup.snar -f backup_incr_1.tar.gz /root/lab/origin/

# 복구
tar xzf backup_incr_2.tar.gz -C restore/

rsync 동기화 백업 (실무 필수!)

# 로컬 동기화
rsync -av origin/ restore/

# 원격 동기화 (SSH 키 사용)
rsync -avz -e "ssh -i ~/.ssh/key.pem" \
  /local/path/ user@server:/remote/path/

# 삭제도 동기화
rsync -av --delete origin/ restore/

5. 방화벽 (firewalld)

핵심 명령어

# 방화벽 상태 확인
systemctl status firewalld
firewall-cmd --list-all

# 포트 개방 (즉시 적용)
firewall-cmd --add-port=8080/tcp

# 포트 영구 개방
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

# 서비스 추가
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

# 열린 포트 확인
firewall-cmd --list-ports
ss -nlpt | grep :80

Zone 개념

Zone 신뢰도 용도

public 낮음 (기본) 허용한 포트만 열림
trusted 높음 모든 접속 허용 (위험)
drop 없음 모든 요청 무시

6. SELinux (보안 필수 개념)

3가지 모드

# 상태 확인
getenforce

# 허용 모드 (로그만 남기고 차단 안 함)
setenforce 0

# 강제 모드 (규칙 위반 시 차단)
setenforce 1

핵심: 권한이 있어도 SELinux 정책에 어긋나면 차단됨!


7. 쉘 스크립트 기초

비교 연산자

연산자 의미 수학 기호

-eq 같다 =
-ne 같지 않다
-lt 작다 <
-le 작거나 같다
-gt 크다 >
-ge 크거나 같다

실행 방법 차이

# 1. bash로 실행 (실행 권한 불필요)
bash script.sh

# 2. 직접 실행 (실행 권한 필요)
chmod +x script.sh
./script.sh

기본 구조

#!/bin/bash

# 파일 읽기
while read line
do
  echo "$line"
done < input.txt

# 조건문
if [ $? -eq 0 ]; then
  echo "성공"
else
  echo "실패"
fi

8. 중요 디렉토리 구조

경로 용도

/etc 설정 파일 (가장 중요!)
/var 로그, 웹 파일 등 변하는 데이터
/home 일반 사용자 홈
/root root 사용자 홈
/usr 설치된 프로그램
/tmp 임시 파일

 


자주 쓰는 옵션 정리

옵션 의미 용도

-a All 숨김파일까지 전부
-r Recursive 하위 폴더까지
-f Force 강제 실행
-i Interactive 확인하며 실행
-h Human-readable 사람이 읽기 편하게 (KB, MB)
-v Verbose 상세 출력

 핵심 요약

  1. 쿼터: setquota -u user soft hard 0 0 /path
  2. 압축: tar cvfz file.tar.gz files* (가장 많이 씀!)
  3. 백업: rsync -avz --delete source/ dest/  ---> source 폴더의 내용을 dest 폴더에 똑같이 복사하되, dest에만 있는 파일은 삭제해라

rsync -avz --delete source/ dest/
  │    │││   │       │       │
  │    │││   │       │       └─ 목적지
  │    │││   │       └─────────── 원본
  │    │││   └─────────────────── dest에만 있는 파일 삭제
  │    ││└─────────────────────── 압축 전송 (네트워크용)
  │    │└──────────────────────── 상세 출력
  │    └───────────────────────── 모든 속성 보존
  └────────────────────────────── 원격 동기화 도구

  1. 방화벽: firewall-cmd --permanent --add-port=8080/tcp
  2. SELinux: 막히면 setenforce 0으로 테스트
  3. 스크립트: 첫 줄에 #!/bin/bash 필수