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 를 바꾸서 사용 하면 된다.
스크립트 설명
- 날짜와 백업 디렉토리 변수 설정: 현재 날짜와 백업 디렉토리를 설정합니다.
- 백업 디렉토리 확인 및 생성: 백업 디렉토리가 존재하지 않으면 생성합니다.
- 3일마다 백업 수행: 현재 날짜를 확인하여 3일마다 백업을 수행합니다.
- 백업 파일 생성: mysqldump 명령어를 사용하여 백업 파일을 생성합니다.
- 한 달이 지난 백업 파일 자동 삭제: find 명령어를 사용하여 백업 디렉토리에서 한 달(30일) 이상된 백업 파일을 찾아 삭제합니다.
- 삭제 성공 여부 확인: 오래된 백업 파일 삭제가 성공했는지 확인합니다.
크론탭 설정
크론탭을 사용하여 스크립트를 매일 자정에 실행하도록 설정합니다.
터미널을 열고 크론탭 편집기를 엽니다
crontab -e
크론탭 파일에 다음 줄을 추가합니다:
0 0 * * * /home/test/db_backup.sh
이 설정은 매일 자정(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
스크립트 설명
- 날짜와 디렉토리 변수 설정: 현재 날짜, 백업 디렉토리 및 업로드 디렉토리를 설정합니다.
- 백업 디렉토리 확인 및 생성: 백업 디렉토리가 존재하지 않으면 생성합니다.
- 3일마다 압축 수행: 현재 날짜를 확인하여 3일마다 업로드 디렉토리를 압축합니다.
- 디렉토리 압축: tar 명령어를 사용하여 업로드 디렉토리를 압축 파일로 생성합니다.
- 한 달이 지난 백업 파일 자동 삭제: find 명령어를 사용하여 백업 디렉토리에서 한 달(30일) 이상된 압축 파일을 찾아 삭제합니다.
- 삭제 성공 여부 확인: 오래된 백업 파일 삭제가 성공했는지 확인합니다.
크론탭 설정
크론탭을 사용하여 스크립트를 매일 자정에 실행하도록 설정합니다.
터미널을 열고 크론탭 편집기를 엽니다:
crontab -e
크론탭 파일에 다음 줄을 추가합니다:
0 0 * * * /home/test/db_backup.sh
이제 db_backup.sh 스크립트는 3일마다 /home/test/uploads 디렉토리를 압축하고, 한 달이 지난 압축 파일을 자동으로 삭제합니다.
댓글 ( 0)
댓글 남기기