IT기술/Linux

7-3 예약 데몬 2

dobbby 2013. 9. 11. 15:30
반응형

  2. crond 

    => 원하는 시간 및 날짜마다 원하는 명령을 실행(명령을 반복 실행)

    => 데이타 백업을 하기 위해 사용

    => crond 실행 : standalone 방식


      ]# ps -xa | grep crond 

      3187 ?        Ss     0:00 crond


      ※crond이 실행되어 있지 않은 경우

        ]# service crond start

        ]# chkconfig --level 2345 crond on


      ※ crond는 대부분 실행되어 있다. => 시스템에서 crond을 이용하여 예약 작업을 실행하기 때문

          ]# vi /etc/crontab   => 시스템이 사용하는 예약정보를 저장한 파일  


    => crond를 활용한 예약 관리

      ]# crontab -e     =>  예약 생성, 변경, 삭제, 확인 : vi 편집기 이용

      분  시  일   월   요일    명령    => 반복적인 명령을 실행하도록 설정

      .....

 

       ※ ]# crontab -l     =>  예약 확인

          ]# crontab -r     =>  모든 예약 삭제 


    예시) ]# crontab -e

          30  *  *  *  *  /root/backup.sh   => 매월 매일 매시 30분에 명령 실행

          30  04  *  *  *  /root/backup.sh  => 매월 매일 04시 30분에 명령 실행

          30  04  *  *  5  /root/backup.sh  => 매월 매주 금요일 04시 30분에 명령 실행

          30  04  1  *  *  /root/backup.sh  => 매월 1일 04시 30분에 명령 실행

          30  04  1  1  *  /root/backup.sh  => 1월 1일 04시 30분에 명령 실행

          30  04  *  *  1-5  /root/backup.sh   =>  매월 매주 월요일부터 금요일까지 04시 30분에 명령 실행

          30  04  1  1-12/3  *   /root/backup.sh    => 1월부터 12월까지 3개월마다 1일 04시 30분에 명령 실행  


            ※ 요일  :  0 또는 7 - 일요일   1~6 - 월요일~토요일


  문제) 매일 오전 6시 20분에 타임서버을 이용하여 시간이 동기화 되도록 설정해 주세요.






]# date 091106192013    =>  시간 변경 후 1분후 시간 확인




 => 데이타 백업 : 증분(incremental)백업,업데이트(update)백업,증가분(differential)백업 : 압축프로그램을 이용


      ※ 백업 관련 정보를 사용  =>  날짜정보를 활용


       ]# date +%Y%m%d      =>  date에 의해 출력될 패턴을 지정

       20130911


       ]# date --date '2 months ago' +%Y%m%d    =>  2달전 date 정보를 패턴에 맞게 출력

       20130711

      

       ]# date +%a     =>  요일 출력 

       수 


       ]# today=$(date +%Y%m%d)     =>  시스템변수 today에 데이타를 저장


       ]# echo $today       =>  echo 명령을 이용하여 시스템변수 today의 데이타를 화면에 출력




 ]# tar cvzf etc_$today-fullbackup.tar.gz /etc   => /etc 디렉토리를 백업 

( $ 뒤에 _는 변수명으로 인식해서 파일명으로 지정되지 않는다)

          => 압축파일명 :etc_20130911-fullbackup.tar.gz





     ※ 증분백업를 위한 ShellScript 프로그램 작성 => tar 명령에 -g 옵션을 활용


       ]# vi backup.sh

       #!/bin/bash

       backup_dir=/backup

       time=$(date +%Y%m%d%H%M)

       day=$(date +%a)

       backup_source=/home


       if [ ! -d $backup_dir ]

       then

               mkdir $backup_dir

       fi


       if [ $day = "일" ]

       then

               rm -f $backup_dir/home.backup.list

               tar -g $backup_dir/home.backup.list -czf $backup_dir/home_$time.full-backup.tar.gz $backup_source

       else

               tar -g $backup_dir/home.backup.list -czf $backup_dir/home_$time.backup.tar.gz $backup_source

       fi       





       ]# chmod 700 backup.sh

       ]# ./backup.sh 

       ]# crontab -e

       30  04  *  *  *  /root/backup.sh





  문제) 위에서 백업 데이타들중 3달전 백업파일을 삭제하는 프로그램을 

        작성하고 crond을 이용하여 매달 첫째주 일요일에 실행되도록 설정하세요.


       ]# vi backup_remove.sh

       time=$(date --date '3 months ago' +%Y%m)

       backup_dir=/backup

       rm -rf $backup_dir/home_$time*


       ]# chmod 700 backup_remove.sh


       ]# crontab -e

       00  06  1-7  *  0  /root/backup_remove.sh






반응형