서버 & 리눅스 실무팁

리눅스 쉘 스크립트 실전 예제 Part 7: 중복 및 무결성 검사

smartbay 2025. 6. 14. 15:46

리눅스 쉘 스크립트 실전 예제 Part 7: 중복 및 무결성 검사

파일이 안전하게 보관되고 있는지, 누락되거나 중복된 파일은 없는지 자동으로 점검해 보세요.


1. 해시 기반 중복 파일 탐지 (md5sum)

용도: 내용이 동일한 파일을 해시값 기준으로 판별하여 중복 보관을 방지합니다.

find /path/to/dir -type f -exec md5sum {} + | sort | uniq -w32 -d

설명:
- md5sum: 각 파일의 MD5 해시값을 계산합니다.
- uniq -w32 -d: 해시 앞 32자 기준으로 중복된 파일만 추려냅니다.


2. 중복 파일 자동 삭제 또는 이동

용도: 중복된 파일을 감지한 후, 첫 파일을 제외하고 나머지는 다른 폴더로 이동하거나 삭제할 수 있습니다.

mkdir -p /path/to/duplicates
fdupes -r /path/to/target -N -m -d --noprompt -o /path/to/duplicates

설명:
- fdupes: 해시와 바이트 비교로 중복 파일 식별
- -o: 중복 파일을 지정 디렉토리로 이동 (또는 -d로 삭제)
- --noprompt: 비대화식으로 실행 (주의: 실수 방지 필요)


3. 체크섬 목록 저장 및 무결성 검증

용도: 중요한 파일의 해시 목록을 미리 저장해두고, 변경 여부를 추후 확인할 수 있습니다.

md5sum /path/to/files/* > checksums.md5
md5sum -c checksums.md5

설명:
- -c: 저장된 해시값과 현재 파일을 비교하여 변경 여부 확인
- 해시가 달라지면 "FAILED"로 표시됩니다.


4. 파일 변경 감지 (diff, stat)

용도: 기준 파일과 현재 파일을 비교하여 수정 여부를 점검합니다.

diff original.conf current.conf
stat -c "%y %n" *.conf

설명:
- diff: 파일 간 내용 비교
- stat: 마지막 수정 시간을 확인하여 변경 여부 판단
- 자동화 시엔 cron과 연계하여 주기적인 검사 가능


5. 무결성 확인 후 자동 백업 실행

용도: 파일 변경이 감지되지 않은 경우에만 백업을 수행하도록 제어하는 스크립트입니다.

#!/bin/bash
FILE="data.db"
CHECKSUM_FILE="prev.md5"

md5sum "$FILE" > new.md5

if cmp -s new.md5 "$CHECKSUM_FILE"; then
  echo "파일 무결성 유지됨. 백업 수행."
  cp "$FILE" backup_$(date +%F).db
else
  echo "파일 변경 감지됨. 백업 보류."
fi

mv new.md5 "$CHECKSUM_FILE"

설명:
- cmp -s: 기존 해시값과 비교하여 동일 여부 판단
- 무결성 유지 시에만 백업을 수행하고 로그로 기록할 수 있습니다.


마무리

무결성 관리는 보안뿐 아니라 백업 효율성과 장애 예방에도 중요합니다. 주기적으로 체크섬을 관리하고 자동화 스크립트를 활용하면 변경 이력을 추적하고 리스크를 줄일 수 있습니다.


실무에 바로 적용할 수 있는 리눅스 쉘 스크립트 예제, 스마트베이에서 함께합니다.


스마트베이 | IT 자동화 혁신 파트너
비즈니스 효율을 높이는 스마트한 IT 솔루션을 제공합니다.

웹사이트 : www.esmartbay.co.kr
E-mail : smartbay.svc@gmail.com
카카오톡 : 바로 상담하기