리눅스 쉘 스크립트 실전 예제 Part 3: 백업 및 압축 자동화
파일 백업과 압축 작업, 이제는 손이 아닌 쉘 스크립트로 자동화해보세요.
1. 날짜별 디렉토리 백업 (tar + gzip)
용도: 특정 디렉토리를 날짜별로 백업 파일로 만들고 압축합니다. 정기 백업에 유용합니다.
tar -czf backup_$(date +%Y%m%d).tar.gz /path/to/source
설명:
- tar -czf: 디렉토리를 gzip 압축된 tar 파일로 생성합니다.
- $(date +%Y%m%d): 백업 파일명에 오늘 날짜를 자동 삽입합니다.
- 백업 파일은 현재 디렉토리에 저장됩니다. 필요 시 대상 경로를 지정하세요.
2. 특정 확장자(.log)만 압축 백업
용도: 로그 파일처럼 크기만 차지하는 특정 확장자만 따로 모아 압축 백업할 수 있습니다.
find /path/to/logs -name "*.log" -type f | tar -czf logs_$(date +%Y%m%d).tar.gz -T -
설명:
- find: .log 파일 목록을 추출합니다.
- tar -T -: 표준 입력에서 받은 파일 목록을 압축합니다.
- 압축 파일명에 날짜를 붙여 백업 버전을 구분할 수 있습니다.
3. 최근 7일 내 수정된 파일만 백업
용도: 최근 작업한 파일들만 백업 대상으로 삼고 싶을 때 유용합니다. 변경 이력 기반 백업에 적합합니다.
find /path/to/dir -type f -mtime -7 | tar -czf recent_$(date +%Y%m%d).tar.gz -T -
설명:
- -mtime -7: 7일 이내에 수정된 파일만 필터링합니다.
- tar -T -: find 결과를 활용하여 압축합니다.
4. 백업 디렉토리 자동 생성 및 저장
용도: 날짜별 백업 폴더를 자동으로 생성하고, 그 안에 백업 파일을 정리하는 스크립트입니다.
#!/bin/bash
DATE=$(date +%Y-%m-%d)
DEST="/backup/$DATE"
mkdir -p "$DEST"
tar -czf "$DEST/site_backup.tar.gz" /var/www/html
설명:
- mkdir -p: 날짜 기반 폴더를 자동 생성합니다.
- tar: 정해진 위치에 백업 파일을 압축하여 저장합니다.
5. 백업 완료 후 이메일 알림 전송
용도: 백업 작업이 끝난 뒤 성공 여부를 메일로 알릴 수 있도록 구성된 자동 알림 스크립트입니다.
#!/bin/bash
FILE="backup_$(date +%Y%m%d).tar.gz"
tar -czf "$FILE" /home/user/data
if [ $? -eq 0 ]; then
echo "백업 완료: $FILE" | mail -s "백업 성공" admin@example.com
else
echo "백업 실패" | mail -s "백업 오류" admin@example.com
fi
설명:
- $?: tar 명령의 성공 여부를 판단합니다.
- mail: 메일 제목과 본문을 함께 전송합니다.
메일 설정이 되어 있어야 하며, mailutils 또는 sendmail 패키지가 필요할 수 있습니다.
마무리
압축 및 백업 스크립트는 크론(cron)과 결합하면 정기 백업 자동화에 매우 유용하게 활용할 수 있습니다. 백업 파일은 권한 설정과 보관 정책에 따라 주기적으로 확인하고 정리하는 것이 좋습니다.
실무에 바로 적용할 수 있는 리눅스 쉘 스크립트 예제, 스마트베이에서 함께합니다.
비즈니스 효율을 높이는 스마트한 IT 솔루션을 제공합니다.
웹사이트 : www.esmartbay.co.kr
E-mail : smartbay.svc@gmail.com
카카오톡 : 바로 상담하기
'서버 & 리눅스 실무팁' 카테고리의 다른 글
| 리눅스 쉘 스크립트 실전 예제 Part 5: 디스크 용량과 감시 자동화 (0) | 2025.06.14 |
|---|---|
| 리눅스 쉘 스크립트 실전 예제 Part 4: 파일 이름 및 확장자 정리 (0) | 2025.06.14 |
| 리눅스 쉘 스크립트 실전 예제 Part 2: 자동 삭제 스크립트 (0) | 2025.06.14 |
| 리눅스 쉘 스크립트 실전 예제 Part 1: 파일 탐색과 정렬 (0) | 2025.06.14 |
| AppStream 모듈을 활용한 PHP, Node.js 버전별 설치 전략 (3) | 2025.06.14 |