리눅스 쉘 스크립트 실전 예제 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 솔루션을 제공합니다.
웹사이트 : www.esmartbay.co.kr
E-mail : smartbay.svc@gmail.com
카카오톡 : 바로 상담하기
'서버 & 리눅스 실무팁' 카테고리의 다른 글
| 리눅스 쉘 스크립트 실전 예제 Part 9: 원격 파일 연동 (0) | 2025.06.14 |
|---|---|
| 리눅스 쉘 스크립트 실전 예제 Part 8: 자동화 예약 실행 (0) | 2025.06.14 |
| 리눅스 쉘 스크립트 실전 예제 Part 6: 권한 및 보안 관리 자동화 (0) | 2025.06.14 |
| 리눅스 쉘 스크립트 실전 예제 Part 5: 디스크 용량과 감시 자동화 (0) | 2025.06.14 |
| 리눅스 쉘 스크립트 실전 예제 Part 4: 파일 이름 및 확장자 정리 (0) | 2025.06.14 |