본문 바로가기
리눅스/기초 학습

Day 5: 파일 검색, 백업 & 자원 확인

by CBROJIN 2025. 8. 1.

1) 학습 요약표

학습 내용 설명
파일/명령어 위치 검색 find, locate, which, whereis 등으로 파일 존재 확인 및 위치 검색
파일 조건 검색 find -name, -type, -mtime, -size, -perm, -user 등으로 조건 필터링
압축 및 백업 tar, gzip, zip, unzip 명령으로 파일 백업 및 압축 해제
디스크/마운트 상태 확인 df, du, lsblk 등으로 디스크 공간 및 마운트 정보 확인
파일 비교 diff, cmp로 파일 간 차이 비교
 

2) 이론 설명

(1) 파일 검색 명령어

1. find: 디렉토리 트리에서 조건에 맞는 파일 검색

  • 기능 설명: find는 특정 디렉토리부터 하위 경로를 따라가며 조건에 맞는 파일을 찾아줍니다. 예를 들어 이름에 .log가 포함되거나, 소유자가 특정 사용자일 때 등 원하는 조건으로 세밀하게 필터링할 수 있습니다.
  • 주요 옵션:
    • -name: 이름 기준 검색 (와일드카드 * 사용 가능)
    • -type: 파일 타입(f: 일반 파일, d: 디렉토리)
    • -mtime: 마지막 수정일 기준 (-3은 최근 3일 이내, +5는 5일 이전)
    • -size: 크기 기준 (예: +10M은 10MB보다 큰 파일)
    • -perm: 권한 조건 (예: -perm 755, -perm -4000은 SUID 비트 설정된 파일)
    • -user: 소유자 기준 검색
    • -exec: 검색된 결과에 대해 명령 실행 (예: stat, rm 등)
# 최근 3일 이내에 수정된 로그 파일 검색
find /var/log -name "*.log" -mtime -3

# 소유자가 devuser인 파일 검색
find /home -user devuser

# 퍼미션이 755인 실행 스크립트에 대해 파일 정보 출력
find /scripts -type f -perm 755 -exec stat {} \;

 

2. locate: 인덱스 기반 빠른 검색

  • 기능 설명: locate는 미리 생성된 파일 경로 데이터베이스를 이용해 빠르게 파일 이름으로 검색합니다. 단, 실시간 변경은 반영되지 않으므로 updatedb 명령으로 최신화해야 합니다.
sudo updatedb
locate nginx.conf

 

3. which, whereis: 명령어 위치 확인

  • 기능 설명:
    • which: 명령어가 현재 어떤 경로의 실행파일인지 확인 (실제 실행되는 명령 경로)
    • whereis: 명령어의 실행파일, 관련 문서, 매뉴얼 위치까지 모두 표시
which python3
whereis ls
 

(2) 압축 및 백업 명령어

1. tar: 디렉토리 전체 백업

  • 기능 설명: 여러 개의 파일이나 폴더를 하나의 묶음(아카이브)으로 만들어 백업하거나 전달할 때 사용합니다. 
  • 디렉토리를 통째로 백업할 땐 tar -cvzf 조합이 기본입니다.
  • 주요 옵션:
    • -c: 새로 생성(create)
    • -v: 진행 상황 출력(verbose)
    • -z: gzip 압축 사용
    • -f: 결과 파일 이름 지정
    • -x: 압축 해제(extract)
    • -C: 압축 해제 시 경로 지정
    • --exclude: 제외할 경로 지정
# logs 디렉토리를 logs.tar.gz로 압축
sudo tar -cvzf logs.tar.gz /var/logs

# 특정 서브디렉토리 제외하고 압축
sudo tar --exclude='/var/logs/httpd' -cvzf logs.tar.gz /var/logs

# 압축 해제
sudo tar -xvzf logs.tar.gz -C /backup

 

 

2. gzip, gunzip: 단일 파일 압축/해제

  • 기능 설명: .log처럼 단일 파일을 간단히 .gz로 압축하거나 복원할 때 사용. 압축 전 원본 파일은 삭제되므로 필요시 백업 권장
gzip access.log  # access.log.gz 생성
gunzip access.log.gz  # 원래 파일로 복원

 

3. zip, unzip: Windows 호환 압축

  • 기능 설명: .zip 형식은 Windows에서도 바로 풀 수 있어 이식성이 좋습니다.
zip backup.zip file1 file2 dir/*
unzip backup.zip -d /restore_path
 

(3) 디스크 및 자원 확인

1. df: 디스크 용량 확인

  • 기능 설명: 각 마운트 지점별 디스크 사용량을 확인합니다.
  • -h: 사람이 읽기 쉬운 형식 (예: GB, MB)
  • -i: inode 사용량 확인 (파일 개수와 관련)
df -h

 

2. du: 디렉토리별 사용량 확인

  • 기능 설명: 특정 디렉토리가 얼마나 많은 용량을 쓰고 있는지 확인할 때 유용
  • -sh: 요약 출력, --max-depth=n: n단계까지만 출력, -c: 총합 표시
du -sh /var/log
sudo du -h --max-depth=1 /var | sort -hr

lsblk: 블록 장치 확인

  • 기능 설명: 연결된 디스크, 파티션 구조를 트리 형태로 보여줌
lsblk
 

(4) 파일 비교 명령어

1. diff: 텍스트 파일 차이 비교

  • 기능 설명: 두 텍스트 파일의 줄 단위 변경사항을 비교 (버전 비교 등)
  • 초보자 팁: 설정파일 변경 여부 확인에 유용
diff config_v1.txt config_v2.txt

cmp: 이진 파일 비교

  • 기능 설명: 두 파일이 이진적으로 동일한지 바이트 단위로 비교
  • 초보자 팁: 텍스트가 아닌 바이너리 파일 비교 시 사용

 

3) 기본 실습 과제 (5개)

과제 1: 사용자 로그 백업

문제 설명: /var/log 디렉토리 내 최근 3일간 수정된 .log 파일을 /backup/logs/로 복사 후 tar로 백업합니다.

 

과제 2: 특정 소유자의 파일만 백업

문제 설명: 사용자 dev1이 소유한 /home/dev1 하위 파일만 백업합니다.

$(명령어) : () 안에 있는 명령어를 실행한 결과(output) 를 치환해서 그 자리에 삽입하라는 뜻

 

과제 3: 디스크 사용량 확인

문제 설명: /var 하위 디렉토리별 디스크 사용량을 확인하고 가장 큰 경로를 찾습니다.

 

과제 4: SUID 파일 검색

문제 설명: 시스템 전체에서 SUID가 설정된 파일을 찾아 /tmp/suid_list.txt에 저장합니다.

 

 

과제 5: 명령어 위치 확인

문제 설명: 시스템에서 curl, nc, traceroute 명령어의 실행 위치와 매뉴얼 파일을 확인합니다.