리눅스

 

 

1.DB 백업 처리

 

크론탭을 사용하여 스크립트를 3일마다 실행하려면,

주기적인 스케줄링을 위해 특정 날짜 패턴을 사용해야 합니다. 크론탭 자체는

"매 3일"을 직접적으로 지원하지 않지만, 몇 가지 대안적인 방법이 있습니다.

가장 간단한 방법은 날짜를 확인하고 조건에 맞을 때만 실행되도록 스크립트 내에서 제어하는 것입니다.

또한,

한 달이 지난 백업 파일을 자동으로 삭제하려면 find 명령어를 사용하여 특정 기간이 지난 파일을 찾고 삭제할 수 있습니다.

이를 db_backup.sh 스크립트에 추가하면 됩니다. 아래는 수정된 스크립트입니다

 

/home/test/db_backup.sh 스크립트

 

#!/bin/bash

DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/test/backup/
TODAY=$(date +%d)

# 백업 디렉토리가 존재하는지 확인하고, 없으면 생성합니다.
if [ ! -d "$BACKUP_DIR" ]; then
  mkdir -p "$BACKUP_DIR"
fi

# 3일마다 실행되도록 제어
if (( TODAY % 3 == 0 )); then
  # 데이터베이스 백업 수행
  mysqldump -u test -p'test1234' test_db> ${BACKUP_DIR}test_${DATE}.sql

  # 백업 성공 여부 확인
  if [ $? -eq 0 ]; then
    echo "Backup successful: ${BACKUP_DIR}test_${DATE}.sql"
  else
    echo "Backup failed"
  fi
else
  echo "Today is not a backup day."
fi

# 한 달이 지난 백업 파일 자동 삭제
find $BACKUP_DIR -type f -name "test_*.sql" -mtime +30 -exec rm {} \;

# 삭제 성공 여부 확인
if [ $? -eq 0 ]; then
  echo "Old backups deleted successfully."
else
  echo "Failed to delete old backups."
fi

 

test 를 바꾸서 사용 하면 된다.

 

스크립트 설명

  1. 날짜와 백업 디렉토리 변수 설정: 현재 날짜와 백업 디렉토리를 설정합니다.
  2. 백업 디렉토리 확인 및 생성: 백업 디렉토리가 존재하지 않으면 생성합니다.
  3. 3일마다 백업 수행: 현재 날짜를 확인하여 3일마다 백업을 수행합니다.
  4. 백업 파일 생성: mysqldump 명령어를 사용하여 백업 파일을 생성합니다.
  5. 한 달이 지난 백업 파일 자동 삭제: find 명령어를 사용하여 백업 디렉토리에서 한 달(30일) 이상된 백업 파일을 찾아 삭제합니다.
  6. 삭제 성공 여부 확인: 오래된 백업 파일 삭제가 성공했는지 확인합니다.

 

크론탭 설정

크론탭을 사용하여 스크립트를 매일 자정에 실행하도록 설정합니다.

  1. 터미널을 열고 크론탭 편집기를 엽니다

 

crontab -e

 

 

크론탭 파일에 다음 줄을 추가합니다:

 

0 0 * * * /home/test/db_backup.sh

 

  1. 이 설정은 매일 자정(00:00)에 스크립트를 실행합니다.

이제 db_backup.sh 스크립트는 3일마다 백업을 수행하고, 한 달이 지난 백업 파일을 자동으로 삭제합니다.

 

 

crontab 실행 명령

 

// 크론탭 시작
service cron start

// 크론탭 중지
service cron stop  

// 작동확인
service cron status 

 

 

스크립트 권한 설정

스크립트가 실행 가능하도록 권한을 설정합니다:

 

chmod +x /home/nolto/db_backup.sh

 

 

 

 

 

 

2.디렉토리  백업 처리

 

#!/bin/bash

DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/test/backup/
UPLOADS_DIR=/home/test/uploads/

# 백업 디렉토리가 존재하는지 확인하고, 없으면 생성합니다.
if [ ! -d "$BACKUP_DIR" ]; then
  mkdir -p "$BACKUP_DIR"
fi

# 3일마다 실행되도록 제어
TODAY=$(date +%d)
if (( TODAY % 3 == 0 )); then
  # uploads 디렉토리 압축
  tar -czf ${BACKUP_DIR}uploads_${DATE}.tar.gz -C ${UPLOADS_DIR} .

  # 압축 성공 여부 확인
  if [ $? -eq 0 ]; then
    echo "Backup successful: ${BACKUP_DIR}uploads_${DATE}.tar.gz"
  else
    echo "Backup failed"
  fi
else
  echo "Today is not a backup day."
fi

# 한 달이 지난 백업 파일 자동 삭제
find $BACKUP_DIR -type f -name "uploads_*.tar.gz" -mtime +30 -exec rm {} \;

# 삭제 성공 여부 확인
if [ $? -eq 0 ]; then
  echo "Old backups deleted successfully."
else
  echo "Failed to delete old backups."
fi

 

 

스크립트 설명

  1. 날짜와 디렉토리 변수 설정: 현재 날짜, 백업 디렉토리 및 업로드 디렉토리를 설정합니다.
  2. 백업 디렉토리 확인 및 생성: 백업 디렉토리가 존재하지 않으면 생성합니다.
  3. 3일마다 압축 수행: 현재 날짜를 확인하여 3일마다 업로드 디렉토리를 압축합니다.
  4. 디렉토리 압축: tar 명령어를 사용하여 업로드 디렉토리를 압축 파일로 생성합니다.
  5. 한 달이 지난 백업 파일 자동 삭제: find 명령어를 사용하여 백업 디렉토리에서 한 달(30일) 이상된 압축 파일을 찾아 삭제합니다.
  6. 삭제 성공 여부 확인: 오래된 백업 파일 삭제가 성공했는지 확인합니다.

크론탭 설정

크론탭을 사용하여 스크립트를 매일 자정에 실행하도록 설정합니다.

  1. 터미널을 열고 크론탭 편집기를 엽니다:

 

crontab -e

 

크론탭 파일에 다음 줄을 추가합니다:

 

0 0 * * * /home/test/db_backup.sh

 

이제 db_backup.sh 스크립트는 3일마다 /home/test/uploads 디렉토리를 압축하고, 한 달이 지난 압축 파일을 자동으로 삭제합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

정신은 꽁무니에 차고 다닌다 , 정신없이 엉뚱한 짓을 잘하거나, 건망증이 심하여 할 일을 잊어버리기를 잘한다는 말.

댓글 ( 0)

댓글 남기기

작성
  •    
  •    
  •  

리눅스 목록    more