๊ฐ์(feat. Linux)
* ์ ์ด ์์
์ ํ๋๊ฑฐ์ง?
๐ OS๋ฅผ ์ฌ์ฉํ๋ ์๊ฐ๋ถํฐ ์ฐ๋ฆฌ๋ ํ์์ ์ผ๋ก Storage capacity ๊ด๋ฆฌ๋ฅผ ํ๊ฒ ๋๋ค.
OS๊ฐ ์ค์น๋๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ ธ๊ฐ๋ ์ฉ๋์ ๋บ ๋๋จธ์ง์
ํ์ ๋ ์ฉ๋์์์ ์ฐ๋ฆฌ๋ OS๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ,
๊ด๋ฆฌ๋ฅผ ํ์ง ์์ผ๋ฉด ์๋์ฐ์์ ์ฐ๋ฆฌ๊ฐ ๋ 'C:\ ๋๋ผ์ด๋ธ' ์ ์ฉ๋์ด ๋ถ์กฑ ๋๋ Mac OS์์ APFS์ Volume ์ด ๊ฐ๋์ฐจ์ ์ผ๋ถ ์๋น์ค๊ฐ ๋์ํ์ง ์๊ฑฐ๋, ์ํ๋ ์๋ฃ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ง ๋ชปํ๊ฒ ๋๋ค.
์ด ์ฌ๋ก๊ฐ ์ผ๋ฐ ๋ฐ์คํฌํ ๋๋ ๋ฉํ์ด ์๋ ์ค๋ฌด์์ ์ฌ์ฉํ๋ ์๋ฒ์ ์ ์ฉ๋ ๊ฒฝ์ฐ ๋ ์ด์ ๋ก๊ทธ๋ฅผ ์์ ์ ์์ด ์๋น์ค๊ฐ ์๋ฒ๋ฆฌ๊ฒ ๋๋ ๊ฒฝ์ฐ๋ ์ฌ์ฌ์น ์๊ฒ ๋ณผ ์ ์๋ค.
์ฌ์ฉํ์ง ์๊ฑฐ๋ ์ค๋๋ ํ์ผ๋ค์ ๋ณด๊ด ์ฃผ๊ธฐ์ ๋ฐ๋ผ ๋ณด๊ดํ๋ฉฐ (๋ณด๊ด ์, ์ฉ๋์ ์ฐจ์ง๋ฅผ ์ค์ด๊ธฐ ์ํด ์์ถํ์ฌ ๋ณด๊ด) ์ ํด์ง ์ผ์ ๋ ๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ์ง์์ ์ผ๋ก ์ ์งํ์ฌ ๊ด๋ฆฌ ํ๋๊ฒ OS๋ฅผ ์ ๋๋ก ์ฌ์ฉํ ์ ์๋ ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ด๋ค.
์ฌ๊ธฐ์ ๋ณด๊ด์ฃผ๊ธฐ(Crontab)์ ์ ์ง ๊ด๋ฆฌ๋ฅผ ์ํ ๊ฐ๋จํ ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋๋ฐ(Shell Script)๋ฅผ ํตํด ๊ฐ๋ตํ๊ฒ ์ฌ์ฉํ๊ณ ์ ํ๋ค.
๋ณด๊ด์ฃผ๊ธฐ์ ํ๋ก๊ทธ๋๋ฐ์ 'Crontab' ๊ณผ 'Shell Script' ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ชจ๋ OS์์ ๋ณ๋์ ๋ชจ๋ ์ค์น ์์ด ๊ธฐ๋ณธ์ ์ผ๋ก OS ์ ๋ด์ฅ๋์ด ์ง์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
Crontab
Crontab ์ด๋?
Crontab์ ๋ฆฌ๋
์ค ์ด์์ฒด์ ์์ ๋ฐฐ์น ์์
์ ์ค์ผ์ฅด๋ง ํ๊ธฐ ์ํ ํ๋ก๊ทธ๋จ์ผ๋ก, ํน์ ์๊ฐ ๋๋ ์ ๊ธฐ์ ์ธ ์ฃผ๊ธฐ์ ๋ฐ๋ผ ์์
์ด ์คํ๋๊ฒ๋ ์ค์ผ์ฅด๋ง์ ํ ์ ์๋ค.
Crontab์ ์๋์ ๊ฐ์ด ์ฃผ๊ธฐ๋ฅผ ์ค์ ํ ์ ์๋ค.
* * * * *
๋ถ(0-59) ์๊ฐ(0-23) ์ผ(1-31) ์(1-12) ์์ผ(0-7)
Crontab ์ ์ฉ
์ฐ๋ฆฌ๋ ์๋ ์์ ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋ฐ/์ด์ ๋ฑ ์ค๋ฌด์ ์ ์ฉํ ์์ ์ด๋ค. ์ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ฉฐ ๋จ๊ธฐ๋ ๋ก๊ทธ๋ค์ ๊ธฐ๋กํ๋ ๊ฒ๊ณผ ๊ทธ๋ ์ง ์์ ๊ฒ ๋ ๊ฐ์ง ์คํ์ผ ์ค ์ํ๊ณ ์ ํ๋ ๋ด์ฉ์ ์ ํํ๋๋ก ํ๋ค. (Tip. ์ค๋ฌด์์ log๋ฅผ ๋ฐฑ์
ํ๋ ๊ณผ์ ์ค ์ค์๋์ ๋ฐ๋ผ ์ ์ฅํ๋ ๋ด์ฉ์ด ๋ค๋ฅด๋ค.
WEB ์คํ ๋ก๊ทธ๋, ๊ฐ๋จํ ์๋น์ค ์คํ ๋ก๊ทธ์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ณผ๊ฐํ๊ฒ ์ง์ฐ๋ฉฐ, ์ง์ฐ๋ฉด์ ๋จ๊ธฐ๋ ๋ก๊ทธ๋ ์ ์ฅํ์ง ์๋๋ค. )
#๋งค์ 1์ผ 00์ 00๋ถ์ /app/cron/ ๊ฒฝ๋ก์ ์๋ log_backup.sh ํ๋ก๊ทธ๋จ์ ์คํํ๋ค.
#์คํ๋๋ฉฐ ๋จ๊ธฐ๋ ๋ก๊ทธ๋ ์ ์ฅํ์ง ์๋๋ค.
00 00 1 * * /app/cron/log_backup.sh < /dev/null 1>/dev/null 2>&1
#๋งค์ 1์ผ 00์ 00๋ถ์ /app/cron/ ๊ฒฝ๋ก์ ์๋ tomcat_log_backup.sh ํ๋ก๊ทธ๋จ์ ์คํํ๋ค.
#์คํ๋๋ฉฐ ๋จ๊ธฐ๋ ๋ก๊ทธ /app/logs/ ๊ฒฝ๋ก์ ์๋ tomcat_cron.log ํ์ผ์ ์ ์ฅํ๋ค.
00 00 1 * * /app/cron/tomcat_log_backup.sh > /app/logs/tomcat_cron.log
Shell Script
Shell Script ๋?
์ ์คํฌ๋ฆฝํธ๋ ๊ฐ๋จํ ๋งํ์๋ฉด Unix/Linux ์ปค๋งจ๋๋ฑ์ ๋์ดํด์ ํ๋ก๊ทธ๋๋ฐํ์ฌ ์คํํ๋ ๊ฒ์ด๋ค.
์ด ๋ํ ์์ฃผ ๊ฐ๋จํ ํ๋ก๊ทธ๋๋ฐ ์ด๊ธฐ ๋๋ฌธ์, ์ธ์ , ์ด๋์, ์ด๋ค ์กฐ๊ฑด์ผ๋ก ์ด๋ ํ ๋ช
๋ น์ ์คํ์ํฌ ๊ฒ์ธ๊ฐ ? ๋ฑ์ ํ ์ ์๋ค.
Shell Script ์ ์ฉ
์ฐ๋ฆฌ๋ ์๋ ์์ ๋ฅผ ์ด์ฉํ์ฌ ์ ์ฉํด๋ณด๊ณ ์ ํ๋ค.
*๋งค๋ฌ 1์ผ์ ์ง๋ ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์
ํ๋ฉฐ, 90์ผ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๋ค. 4๊ฐ์ ์ด์ ์ง๋ Dir์ ์ญ์ ํ๋ค.
#! /bin/sh
. ~/.bash_profile
#System : Backup
#Purpose : Log Backup
#author : ooweat
#๋งค๋ฌ 1์ผ์ ์ง๋ ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์
currdate=`date '+%Y%m%d'`
#์ง๋ ๋ฌ
BACKUP_MONTH=`date +%Y%m -d '-1month'`
RM_MONTH=`date +%Y%m -d '-4month'`
FILE_STYLE=*`date +%Y-%m -d '-1month'`*
#Tomcat ์ฌ์ฉ ์,
TARGETPATH="/app/service/tomcat/logs"
#๊ธฐํ Service ์ฌ์ฉ ์,
#TARGETPATH="/app/service/logs"
echo '#####################################################################################'
echo '##########################[ MONTHLY LOG BACKUP START ]###############################'
echo '#############################[ JOBDATE ]#############################################'
echo '############################[ '$currdate' ]#############################################'
echo '#####################################################################################'
cd $TARGETPATH
if [ ! -d $BACKUP_MONTH ]
then
mkdir -p $BACKUP_MONTH
chmod 775 $BACKUP_MONTH
fi
echo '#####################################################################################'
echo 'Log Files Moved On Monthly Dir'
echo '#####################################################################################'
#ํ์ผ ์ด๋
mv $TARGETPATH/$FILE_STYLE $TARGETPATH/$BACKUP_MONTH/
#๋ฐฑ์
๋๋ ํ ๋ฆฌ๋ก ์ด๋
cd $TARGETPATH/$BACKUP_MONTH/
echo '#####################################################################################'
echo 'Files xz'
echo '#####################################################################################'
#์์ถ
xz ./*
cd $TARGETPATH
cd $(pwd)
echo '#####################################################################################'
echo 'Delete Old Files'
echo '#####################################################################################'
#์์ฑ์ผ๋ก๋ถํฐ, 90์ผ์ด ์ง๋ ํ์ผ ์ญ์
find $TARGETPATH/* -mtime +90 -exec rm {} \;
echo '#####################################################################################'
echo 'Delete Old Dir'
echo '#####################################################################################'
find $TARGETPATH/$RM_MONTH -exec rmdir {} \;