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에서 백업 확인
◎ 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에서 백업 확인
댓글
댓글 쓰기