3. 13 (화) 정리 / Linux - YUM, CRON, RSYNC

Linux - YUM, CRON, RSYNC

◎ RPM - 패키지를 불러와야한다는 단점?, 고질적 문제인 의존성 문제

◎ YUM - RPM과 동일한 형식의 설치 구조 지원

 - 인터넷 repository (창고, 저장소)를 이용하는 기술로, 인터넷만 연결되어 있다면,
지원되는 모든 프로그램의 설치와 관리가 가능
 - 설치하고 싶은 패키지를 설치하면 의존성 때문에 필요한 다른 패키지도 같이 설치.
 - 인터넷으로는 YUM으로, 나의 저장장소로 부터 설치하면 RPM으로. 차이가 큰 것은
아님

● 조회
  - yum list : 설치된 패키지를 확인
    # yum list
- rpm -qa 와 동일
    # yum list [패키지명]
- 지정한 패키지의 설치여부를 확인

● 설치
    # yum install [-y] [패키지명]
- 패키지를 repository로부터 설치

● 업데이트
    # yum update [-y] [패키지명]
- 패키지를 repository로부터 업데이트한다.
- production에서 테스팅이 끝난 패키지만 업데이트

● 삭제
    # yum remove [패키지명]
- 지정한 패키지를 삭제한다.

실습) http 패키지를 찾아보고, 있다면 지우고 재설치, 없다면 설치해보자.


툴삭제



툴 재설치









설치 완료!


◎ CRON
  ● 주기적으로 작업되는 작업 일정을 저장하여 자동으로 실행하는 데몬
  ● at이나 anacron 등과 같이 다양한 프로그램 지원

    - /etc/rc.d/init.d/crond  :  데몬 실행 스크립트 (service를 이용한다.)
    - /usr/lib/systemd/system/crond.service (systemctl을 이용한다.) 위의 둘 중 하나 존재
    - /etc/crontab  :  기본 스케쥴 일정 / 시간별, 일자별, 주간별, 월간 실행 스케쥴 관리
    - /usr/bin/crontab  :  스케쥴 설정 프로그램 파일
    - /etc/cron.allow, /etc/cron.deny  :  /usr/bin/crontab 이용 제한

  ● 사용 형식
     # crontab -u [유저] [옵션]
       *옵션
-e : 스케줄 등록 (vi 환경으로 스케줄 등록) - 일부 삭제 가능
-l : 스케줄 확인 (출력) -list
  -r : 스케줄 삭제 (전부 삭제됨) - 쓰지 말 것.
       *명령어 형식
[분] [시] [일] [월] [요일] [작업내용]
  - 백설표(*) 사용가능 (전부 백설표일 경우 1분당 한번)
  - 시간 범위
    분 : 0 ~ 59
    시 : 0 ~ 23
    일 : 1 ~ 31
    월 : 1 ~ 12
    요일 : 0(일요일) ~ 6(토요일)

예제 실습)
 º crontab -l

 º crontab -e
  - (시간 설정 / 명령어 / 명령어 옵션)
  - 00 0-23 * * * rdate -s time.bora.net
   : 매시간마다 실행
  - 0-59/10 * * * * chown -R data.st /home/data
   : 0에서 59분까지 10분마다 실행
  - 0-59/10 * * * * chmod -R 775 /home/data





 º crontab -l
  - 설정한 스케쥴 출력






-> 파일 생성 확인



-> 파일 저장 결과

 º 기간 설정
  - [#-#] : 실행할 시간 범위를 지정
  - [#-#/#] : 범위 내에서 실행 간격 지정
  - 00  9-18/2  1-15/3 1-12/4  1-5  백업.sh
     : 백업.sh라는 파일이 사전에 준비되어야함 (실행 가능한 파일)

  ● 기본 스케줄 등록 파일
    # cat /etc/crontab
SHELL=/bin/bash : cron이 실행 될 때 기본적으로 사용하는 shell 설정
PATH=/sbin:/bin:/usr/sbin:/usr/bin : cron에 등록된 명령어를 실행하기 위한 PATH
MAILTO=root : cron 실행 결과를 root에게 메일 보냄
HOME=/ : 명령이나 스크립트를 실행할 홈 디렉토리 설정
01 * * * * root run-parts /etc/cron.hourly : 매 시간 1분 마다
02 4 * * * root run-parts /etc/cron.daily : 매일 4시 2분 마다
22 4 * * 0 root run-parts /etc/cron.weekly : 일요일 4시 22분 마다
42 4 1 * * root run-parts /etc/cron.monthly : 매월 1일 4시 42분 마다
- 각각 지정된 시간마다 해당 디렉토리에 저장된 스크립트 실행

◎ RSYNC
  ● 동기화 명령어
  ● 원본 저장 시스템과 백업 저장 시스템을 서로 동기화한다고 보면 무방하다.
  ● 명령어이므로 직접 쳐야한다.
  ● CRON에 등록하면 주기적으로 실행되게 된다.

  ● listening - 서버에서 클라이언트가 접속하는지 주의깊게 주시하는 역할

  ● rsync 설치 확인
    # yum list rsync
    ......
    rsync.i386 2.6.8-3.1

    # yum list xinetd
    .......
    xinetd.i386 2:2.3.14-10.SUL2

  ● 관련 파일
    - 데몬 : /usr/bin/rsync
    - 관리 스크립트 : /etc/rc.d/init.d/xinetd -> 실행할 수 있는 유일한 실행파일
    - 실행 설정 파일 : /etc/xinetd.d/rsync
    - 백업 설정 파일 : /etc/rsyncd.conf

● /etc/xinetd.d/rsync 파일
  - xinetd에 의해 관리되는 rsync는 실행을 위해 /etc/xinetd.d 디렉토리 아래 rsync 파일을
   설정한다.

  # cat /etc/xinetd.d/rsync
  ……………
  service rsync
  {
     disable = no ← 기본값은 yes이다. 실행을 위해 no로 수정한다.
     socket_type = stream
     wait = no
     user = root
     server = /usr/bin/rsync
     server_args = --daemon
     log_on_failure += USERID
  }

● /etc/rsyncd.conf -> 만들어줘야 함 (서버에서 생성)

[서비스 명]  : 리소스 식별자, client에서 이용한다.
path  : 백업 경로
comment  : 주석
uid : 전송자 UID
gid : 전송자 GID
use chroot  : rsync 경로를 외부에서 / 로 인식한다.
read only  : 읽기 전용으로 접근한다.
hosts allow  : 접속 허용할 호스트 (클라이언트만 지정)
max connections  : 동시 접속자 수
timeout -> 초단위

예시)
# cat /etc/rsyncd.conf
[backup]
path = /backup
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.10.13
max connections = 1
timeout 300

● RSYNC 동기화
rsync client 명령을 이용 server의 디렉토리와 client의 디렉토
리를 동기화한다.
rsync –avz [--delete] source destination
rsync -avz [--delete] IP::[서비스명] [백업 디렉토리]
rsync -avz [--delete] [백업 디렉토리] IP::[서비스명]

--delete : source에서 지워진 파일을 destination에서도 지워준다.(완전 동기화 옵션)
   ++ 쓰지 않는게 좋은 옵션이다.(위험)

● rsync 명령 옵션
  • -r : Recursively 복사
  • -v : 작업내역 출력
  • -a : archive mode 작업
    심볼릭 링크, 권한 등 모든 내용을 보존한다.
  • -z : 파일을 압축 전송한다.


  - Local System 내에 동기화하는 법
    rsync –avz /home/httpd/ /backup/httpd/


실습 1) Server(centos)에서 Client(centos64)로 Backup 진행


1. rsync와 xinetd 설치 확인


2.rsync 파일 disable 부분 수정 (yes -> no)


3. /etc/rsyncd.conf 파일 생성


4. /backup 경로에 time.txt(백업대상) 생성



5. 백업 명령어 입력 (경로(/backup in client)는 미리 생성해두어야 한다.)


6. client에서 백업 확인


추가로 알아야할 것.
1. NetworkManager 비활성화 - ntsysv / 삭제 - #yum remove NetworkManager

2. ntsysv 에서 iptables 비활성화
-> 실습 때 해결한 방법 : #service iptables stop

3. vi /etc/selinux/config 에서 enforce 권한 disable로 변경
-> 실습 때 해결한 방법 : #setenforce 0


실습 2) Client(centos64)에서 Server(centos)로 망가진 서버(가정) 복구 진행


1. rsync와 xinetd 설치 확인


2. rsync 파일 disable 부분 수정 (yes -> no)


3. /etc/rsyncd.conf 파일 생성 (위에서 실습 1과 구분하기 위해 경로를 /backup2로 변경)



4. /backup2 경로에 time2.txt(백업대상) 생성
 -> 실수로 backup 디렉토리에 생성하여 다시 backup2 디렉토리로 옮겨주었다.



5. 백업 명령어 입력 (경로(/backup in client)는 미리 생성해두어야 한다.)


6. server에서 백업 확인

댓글

이 블로그의 인기 게시물

Linux Server - FTP 실습 (2 / 2) : 사용자 제한 ( ftpuser / user_list )

전자서명 개념

3.27 (화) - Network (패킷 통신 - 4가지 지연)