반응형
# cron 이란?
주기적으로 반복되는 일을 자동으로 실행할 수 있도록 시스템 작업을 예약 해놓는 것
#실습
# 시간 설정을 위해 관련 패키지 설치
wget http://download.hanbit.co.kr/centos/8/openrdate-1.2-14.fc30.x86_64.rpm
dnf -y install openrdate*.rpm # 관련 패키지 설치
# crontab 설정
cd /etc
vi crontab
############################## vi /etc/crontab ##########################################
00 04 * * * * root cp -r /home /backup # 백업만 되고, 백업파일명 지정 불가능
##########################################################################################
아래와 같이 시간, 분, 일, 월에 대한 설정이 가능하다.
systemctl status crond.service # 현재 cron 상태 확인
systemctl restart crond.service # cron 작업 내용 변경 후 리스타트 해줘야지 적용됨
cd /
ls > 여기에 백업 파일 생길 것
cd /etc
ls cron*
# 단순 백업이 아니라 백업파일명도 설정
# 시간별, 일별, 주별, 월별 설정 가능
# run-parts 디렉터리 : 디렉터리 안의 명령을 모두 실행
# 분, 시, 일, 월, 요일, 사용자, 실행명령
01 * * * * root run-parts /etc/cron.hourly # 매시간 1분에 /etc/cron.hourly 디렉토리 안의 명령들을 자동 실행
02 3 * * * root run-parts /etc/cron.daily # 매일 3시 2분에 /etc/cron.daily 안의 명령들을 자동 실행
03 3 * * 0 root run-parts /etc/cron.weekly # 매주 일요일 3시 3분에 /etc/cron.weekly 안의 명령들을 자동 실행
04 3 1 * * root run-parts /etc/cron.monthly # 매달 1일 3시 4분에 /etc/cron.monthly 안의 명령들을 자동 실행
# 매월 같은 시간에 백업파일 설정(crontab)
# 정해진 일시에 해당 폴더 안 모든 명령어 실행 명령어 추가
vi /etc/crontab
############################# vi /etc/crontab ##########################
01 4 15 * * root run-parts /etc/cron.monthly # 매월 15일 새벽 4시 1분에 monthly 안 명령어 모두 실행
########################################################################
# 해당 폴더 안 자세한 설정 사항 추가(myBackup)
cd /etc/cron.monthly/
touch myBackup.sh
chmod 755 myBackup.sh #작동은 crond가 하는거니까 back.sh에 x 권한(실행권한)이 있어야한다.
ls -l
vi myBackup.sh
############################# vi myBackup.sh ###########################
#!/bin/sh
set $(date)
fname="backup-$2$3tar.xz" # 생성될 백업 파일명 설정
tar cfJ /backup/$fname /home
########################################################################
# 백업용 디렉토리 생성, crond 데몬 재시작
mkdir /backup
systemctl restart crond
# 한달 기다리기 지루하니 컴퓨터 날짜를 강제로 바꾸고 테스트해보기
date 011504002027 # 01월 15일 04시 00분 2027년으로 날짜 변경
systemctl restart crond # 실행 후 1~2분 대기
ls -l /backup
date 021504002027 # 02월(한달 뒤)로 날짜 변경
systemctl restart crond # 실행 후 1~2분 대기
ls -l /backup
더보기
# 시간 폴더에 설정
cd cron.hourly/ # 시간
ls -l # 0anacron 권한 확인
chmod 644 0anacron # 0anacron 권한 변경
ls # 변경된 권한 확인
vi back.sh
######################## vi back.sh 내용 ######################
#!/bin/sh
set $(date)
fname="backup-$2$3tar.xz" #날짜에서 해당 일,월을 가져와서 파일명을 만들어라.
tar cfJ /backup/$fname /home
################################################################
ls -l
chmod 755 back.sh #작동은 crond가 하는거니까 back.sh에 x 권한이 있어야한다.
ls -l
# 백업파일에 요일시간 붙이기
vi *.sh # back.sh 파일 수정
######################## vi back.sh 내용 #########################
#!/bin/sh
set $(date)
fname="backup-$2$3$4$5.tar.xz" #날짜에서 해당 일,월,요일,시간을 가져와서 파일명을 만들어라.
tar cfJ /backup/$fname /home
###################################################################
sh ./back.sh # 실행
ls /backup # 생긴 파일 확인
#rm -rf /backup/* # 백업 폴더 밑의 모든 파일 삭제
# crontab 설정 : 매 시간마다 백업 설정
vi crontab
###################################################
10 * * * * root run-parts /etc/cron.hourly # 매시간 10분 마다 백업 실행
# 분, 시, 일, 월, 요일, 사용자, 실행명령
###################################################
systemctl restart crond
# systemctl restart crond.service # cron 작업 내용 변경 후 리스타트 해줘야지 적용됨
ls -l /backup # 10분 후 백업 된 내용 확인
# 원하는 모양의 폴더 날짜 만들기
#back.sh 수정
echo $1 $2 $3 $4 $5 $6 이라 해도 됨
echo 명령어 > print와 비슷. 터미널 창에 출력을 해본다. 원하는 모양의 연월시 파일을 만들기 위해서
vi 나와서 sh./back.sh 실행하면 결과 출력
echo로 나온 결과값 바탕으로 다시 vi 파일 수정
*at 명령어(일회성 예약 작업 실행 후 소멸)
at 11:30pm January 30 # 1월 30일 오후 11시
at 3:00am tomorrow # 내일 새벽 3시
at now + 1 hours # 지금으로부터 1시간 후
at> cp -r /home /back2 # home폴더의 내용을 back2폴더로 옮겨라
at> ctrtl + d # 나가기 : ctrtl + d
at> (enter)
완료되면 ctrl + D
at -l # 설정한 at명령어 확인
# atrm 작업번호 # at명령어 취소
# 내일 새벽 4시에 시스템을 최신 패키지로 업데이트, 완료되면 시스템 재부팅 예약, 예약 내용 삭제
(at명령어)
rdate -s time.bora.net
at 4:00 am tomorrow
dnf -y update
reboot
(ctrl + d) # 작업예약 완료
at -l # 제일 앞에 출력되는 번호가 작업번호
atrm 작업번호 # 작업 삭제
at -l
오늘은 crontab을 활용하여 특정 기간(예. 매월 15일 새벽 4시)에 맞춰서 서버 자동 백업을 예약하는 방법을 배워보았습니다. 추가로 at 명령어에 대해서도 알아보았습니다. 잘 활용해보시기 바랍니다. 감사합니다.
반응형
'리눅스(Linux) > 실습' 카테고리의 다른 글
[리눅스] centos7(linux) 에서 NginX, Tomcat 다운로드 및 연동하기 + haproxy 설정 및 장애 대응, Tomcat demon 시스템 등록 (1) | 2024.04.26 |
---|---|
[리눅스] Samba 서버 - 리눅스와 윈도우에서 폴더 공유하기 (0) | 2024.03.21 |
[리눅스] Wordpress(워드프레스)로 나만의 웹페이지(or 블로그) 만들기 (7) | 2024.03.14 |
[리눅스] 내가 설치한 프로그램(톰캣)을 systemctl 영역으로 넣어서 관리하기 - enable, disable (0) | 2024.03.04 |
[리눅스] NFS(network file system) : Main server와 Client server에서 특정 디렉토리 공유하기 (0) | 2024.02.29 |