Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- dreamhack
- gitea
- 1인개발
- ssh
- web
- windows
- Flutter
- docker
- 오블완
- hacking
- 버전관리
- log
- 리다이렉션
- CTF
- sqlite
- crontab
- git
- scp
- MSsql
- db
- git서버
- MariaDB
- 티스토리챌린지
- mysql
- 플러터
- Linux
- 수익화
- backup
- CMD
- window
Archives
- Today
- Total
Tech Bastion
LINUX log(로그)파일 만들기 본문
세상에 저번시간에 작성했던 backup관련 sh파일들이 오탈자가 있어 주말 간 백업이 하나도 안되었던 이슈가 있었어요.
스케줄링 처리되는 과정에서 정상적으로 작성은 된 건지. 내부 로직이 어떻게 잘못된 건지 확인이 안 되기 때문에 로그를 남길 수 있도록 처리 하기로 했습니다.
우선 도커 내부에 있는 db_backup.sh파일부터 진행을 해볼 거예요.
기존 db_backup.sh파일
#! /bin/bash
MYSQLDUMP="/usr/bin/mysqldump"
DB_NAME="db"
DB_USER="root"
DB_PASSWORD="a77afe5fbde2"
# sql backup
$MYSQLDUMP -u$DB_USER -p$DB_PASSWORD $DB_NAME > db_$(date '+%Y%m%d').sql
$MYSQLDUMP -u$DB_USER -p$DB_PASSWORD --all-databases > all_db_$(date '+%Y%m%d').sql
# sql remove
rm -f /db_$(date --date '8 days ago' +%Y%m%d).sql
rm -f /all_db_$(date --date '8 days ago' +%Y%m%d).sql
변경된 db_backup.sh파일
#! /bin/bash
MYSQLDUMP="/usr/bin/mysqldump"
DB_NAME="db"
DB_USER="root"
DB_PASSWORD="a77afe5fbde2"
LOG_FILE="/backUpLog/backup.log"
{
echo "Backup started at $(date)"
# sql backup
$MYSQLDUMP -u$DB_USER -p$DB_PASSWORD $DB_NAME > db_$(date '+%Y%m%d').sql
$MYSQLDUMP -u$DB_USER -p$DB_PASSWORD --all-databases > all_db_$(date '+%Y%m%d').sql
# sql remove
rm -f /db_$(date --date '8 days ago' +%Y%m%d).sql
rm -f /all_db_$(date --date '8 days ago' +%Y%m%d).sql
echo "Backup completed at $(date)"
} >> $LOG_FILE 2>&1
우선 로그파일 경로를 세팅해 주고 echo를 통해 시작과 끝을 설정해 주었어요.
우선 이 내용에서 눈에 띄는 부분을 보면 ">>"와 "2>&1"가 있네요. 잠깐 공부를 하고 지나가면
- ">>" : 기존 로그 파일에 출력을 추가(append) 합니다. 파일이 이미 존재하면 그 내용을 덮어쓰지 않고, 새로운 출력이 추가됩니다.
- "2>&1: 표준 오류 출력(stderr)을 표준 출력(stdout)으로 리다이렉트 합니다. 즉, 스크립트 실행 중 발생하는 모든 오류 메시지도 로그 파일에 기록됩니다.
라는 뜻을 가지고 있는데 결국 위 스크립트를 보면 최초 1번은 파일을 생성할 것이고 그 이후부터는 기존 파일에 append를 진행하겠죠?
그리고 쭉 쭉 아래로 진행하다가 오류가 생기면 오류내용을 append 하겠고 정상 처리 되면 echo문만 찍힐 거예요
리눅스에 세팅 해놨던 docker cp를 위한 스크립트 파일도 수정 해볼게요.
기존 dockerCP.sh
#!/bin/bash
CURRENT_DATE=$(date '+%Y%m%d')
docker cp mariadb:db_$CURRENT_DATE.sql /home/db/db_$CURRNET_DATE.sql
docker cp mariadb:all_db_$CURRENT_DATE.sql /home/db/all_db_$CURRENT_DATE.sql
수정된 dockerCP.sh
#!/bin/bash
LOG_FILE="/home/db/backUp/backUp.log"
CURRENT_DATE=$(date '+%Y%m%d')
{
echo "CP started at $(date)"
docker cp mariadb:db_$CURRENT_DATE.sql /home/db/db_$CURRENT_DATE.sql
docker cp mariadb:all_db_$CURRENT_DATE.sql /home/db/all_db_$CURRENT_DATE.sql
echo "CP completed at $(date)"
} >> $LOG_FILE 2>&1
이제는 잘 작동하고 로그도 잘 보관 되겠죠???
앞으로 할 일은 리눅스에서 NAS로 매일 매일 백업된 파일을 전송시키는 작업을 자동화 해볼거에요!
오늘 내용으로 로그 파일 생성의 이점을 요약해보자면
- 문제 디버깅 : 스크립트 실행 중 발생하는 오류나 경고를 확인하여 문제를 해결할 수 있다.
- 스케줄링 작업 확인 : 크론 작업 등에서 스크립트가 실행되었는지. 실행이 성공했는지 여부를 확인할 수 있다.
- 이력 관리 : 스크립트의 실행 이력을 기록하여 언제, 무엇이 실행되었는지를 추적할 수 있습다.
이렇게 정리 할 수 있겠습니다.
'OS > linux' 카테고리의 다른 글
리눅스에서 윈도우로 파일 전송하기(scp, ssh키 생성 및 적용 방법) (0) | 2024.08.19 |
---|---|
리눅스(linux) Docker Mariadb 백업 자동화 crontab 사용하기 (0) | 2024.08.09 |