Linux Bash shell script

Bash Shell Script로 반복 작업 자동화하기

임베디드 친구 2025. 2. 9. 10:41
728x90
반응형

Linux는 Bash Shell Script를 사용하여 반복적인 작업을 자동화하기에 최적화된 환경을 제공합니다. 이번 포스팅에서는 Bash Shell Script를 이용해 백업 작업과 로그 정리 작업을 자동화하는 예제를 통해 효율적인 스크립트 작성 방법을 소개하겠습니다.

1. 반복 작업 자동화의 필요성

서버 관리나 시스템 운영 중에는 반복적인 작업이 자주 발생합니다. 예를 들어:

  • 특정 디렉토리의 데이터를 주기적으로 백업
  • 오래된 로그 파일을 주기적으로 삭제하여 디스크 공간 확보

이러한 작업을 자동화하면 시간과 노력을 절약할 수 있으며, 실수를 방지할 수 있습니다.


2. 자동 백업 스크립트 예제

요구 사항

  • 특정 디렉토리(/home/user/data)를 /backup/data로 백업
  • 날짜별로 백업 폴더를 생성
  • 7일 이전 백업 파일은 자동 삭제

스크립트

#!/bin/bash

# 백업 대상 디렉토리와 백업 저장 위치
SOURCE_DIR="/home/user/data"
BACKUP_DIR="/backup/data"

# 현재 날짜 가져오기
CURRENT_DATE=$(date +"%Y-%m-%d")

# 백업 경로 생성
DEST_DIR="$BACKUP_DIR/$CURRENT_DATE"
mkdir -p "$DEST_DIR"

# 데이터 백업
rsync -av --delete "$SOURCE_DIR/" "$DEST_DIR/"

# 7일 이전 백업 파일 삭제
find "$BACKUP_DIR" -type d -mtime +7 -exec rm -rf {} \;

# 완료 메시지 출력
echo "백업이 완료되었습니다: $DEST_DIR"

실행 방법

  1. 위 스크립트를 backup.sh로 저장합니다.
  2. 실행 권한을 부여합니다:
    chmod +x backup.sh
  3. 스크립트를 실행합니다:
    ./backup.sh
  4. 주기적으로 실행하려면 crontab을 설정합니다:
    crontab -e
    아래와 같이 추가하면 매일 자정에 실행됩니다:
    0 0 * * * /path/to/backup.sh

3. 로그 정리 스크립트 예제

요구 사항

  • /var/log/myapp 디렉토리의 로그 파일 중 30일 이상 된 파일을 삭제
  • 삭제된 파일 기록을 /var/log/cleanup.log에 저장

스크립트

#!/bin/bash

# 로그 디렉토리와 정리 기록 파일 경로
LOG_DIR="/var/log/myapp"
CLEANUP_LOG="/var/log/cleanup.log"

# 현재 날짜 출력
echo "$(date): 로그 정리 시작" >> "$CLEANUP_LOG"

# 30일 이상된 파일 삭제 및 기록
find "$LOG_DIR" -type f -mtime +30 -print -exec rm -f {} \; >> "$CLEANUP_LOG"

echo "$(date): 로그 정리 완료" >> "$CLEANUP_LOG"

실행 방법

  1. 위 스크립트를 cleanup_logs.sh로 저장합니다.
  2. 실행 권한을 부여합니다:
    chmod +x cleanup_logs.sh
  3. 스크립트를 실행합니다:
    ./cleanup_logs.sh
  4. crontab에 설정하여 매주 일요일 오전 2시에 실행되도록 설정합니다:
    crontab -e
    아래와 같이 추가합니다:
    0 2 * * 0 /path/to/cleanup_logs.sh

4. 스크립트 작성 팁

  • 변수 사용: 디렉토리 경로나 날짜와 같은 값을 변수로 지정하면 유지보수가 용이합니다.
  • 로그 기록: 중요한 작업은 로그 파일에 기록하여 추후 검토할 수 있도록 합니다.
  • 테스트: 실환경에서 실행하기 전에 테스트 환경에서 충분히 검증합니다.
  • set -e 옵션 사용: 스크립트에서 에러가 발생할 경우 즉시 종료하도록 설정하면 안정성이 높아집니다.

5. 마무리

이번 포스팅에서는 Bash Shell Script를 활용하여 백업 작업과 로그 정리 작업을 자동화하는 방법을 알아보았습니다. 이러한 스크립트를 통해 반복적인 작업을 자동화하면 시간과 리소스를 절약할 수 있을 뿐만 아니라, 작업의 안정성을 높일 수 있습니다.

반응형