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 |
Tags
- C
- c++
- FOR
- write
- API
- channel
- 리뷰
- range
- File
- Linux
- install
- tcp
- 영화
- JavaScript
- window
- Close
- mutex
- bitcoin
- http
- GO 언어
- 책
- Python
- go언어
- package
- windows
- json
- Golang
- go
- Callback
- Sync
Archives
- Today
- Total
Code Habit
Linux 서버 로그 자동 백업 스크립트 본문
서버 작업시 보통 로그를 남기는데 이를 계속 쌓다보면 서버 하드가 풀나 서비스에 장애가 발생하게 된다. 이 때문에 보통 로그를 날짜별로 남겨 관리하게 되는데 이를 자동으로 해주는 스크립트를 작성해 보겠다.
로그를 백업하는데 필요한 것은 다음 두가지다.
1. 주기적으로 로그를 복사 ( cp )
2. 기존 로그 내용 리셋 ( cat /dev/null )
먼저 로그를 복사하고 기존 로그 내용을 리셋하면 된다. 물론 기존 로그를 리셋하라고 해서 파일을 지우라는 것이 아니라 내용만 삭제하는 것이다. 만약 파일을 삭제한다면 서버내에 주기적으로 로그 파일 존재 유무를 검사하고 만드는 로직이 있지 않다면 더이상 로그는 쌓이지 않을 것이다.
스크립트는 간단하다. ( logShell.sh )
#!/bin/bash
logPath=/home/user1/log/
logFile=test.log
backupdate=$(date+%Y%m%d_%H%M%S)
backupFile=$backupdate"_"$logFile
cp $logPath$logFile $logPath$backupFile
cat /dev/null > $logPath$logFile
로그 파일명과 백업할 파일명( 날짜도 포함 )을 정해주고 파일을 복사하고 기존 로그파일의 내용을 지운다.
이제 이 스크립트를 매일 새벽 4시에 실행하여 로그를 백업해둘 건데 여기서는 crontab을 사용하면 된다.
00 04 * * * /home/user1/log/logShell.sh > /dev/null 2>&1
'crontab -e'로 크론탭 편집모드로 들어가서 위와 같이 작성하면 매일 새벽 04:00에 'logShell.sh'를 실행할 것이다.
물론 logShell.sh를 만들고 나서 실행할 수 있는 파일 권한을 부여하는 것을 잊어서는 안된다.
# chmod 755 logShell.sh
위에서 복사한 로그를 'zip'이나 'tar'를 이용하여 압축하여 남기는 방식도 있지만 위 과정만 이해하면 크게 어렵지 않은 내용이므로 여기서 다루지 않겠다.