본문 바로가기
Infra & Security Eng/Project Implementation

CRON 명령, RSYNC 서버 프로그램 설치하기, /etc/rsyncd.conf 에서 서버 설정하기

by 엔지니어 E 2026. 1. 21.
반응형

CRON: 스케줄 프로그램

# /etc/cron.allow , /etc/cron.deny 어떤 사용자를 쓰게할지, 안쓰게 할지에 대한 명령어

 

Crontab 명령을 이용한 스케줄 정의

# crontab -u  [유저] [옵션] - 루트 관리자만 사용이 가능
-u  [유저] 를 사용안하면 자신이 로그인한 계정으로 명령어가 적용된다

 - 명령어 형식 
[분] [시] [일] [월] [요일] [작업내용]

분: 0-59 / 시: 0-23 / 일: 1-31 / 월: 1-12 / 요일: 0(일요일) - 6(토요일)
* 월-금까지 작업할 때만 많으므로 요일만 지정할 때가 많음 

# crontab -e

00 12 * * * rdate -s time.bora.net
* 매일 매월 매요일 12시에 => 매일 12시에 * 시간 일치 시켜주는게 굉장히 중요함 (구글 서버 시간에 맞춰도 됨)

# crontab -l
0-59/10 * * * * chown-R data.ist/home/data
0분에서 59분 사이에 / 10분 마다 한 번씩 /home/date 

00 0-23 * * * rdate -s time.bora.net
23 뒤에 / 가 없다면 매 시간 이라고 보면 됨

 

RSYNC란?

RSYNC(두 컴퓨터의 특정 디렉토리를 똑같이 맞추는 것 - 백업 하는거라고 보면 됨) 

- 원본 저장 시스템(서버)
- 백업본 저장 시스템(클라이언트) - 백업을 가지고 있는 서버 * 헷갈림 주의
클라이언트(=브라우저. active한 쪽이라 그때그때 실행한다. systemtcl 

 

RSYNC 서버 프로그램 설치 확인하기 

# rsync 설치 확인 
# dnf list rsync*

rsync.x86_64
rsync-daemon.noarch 
(둘 다 설치 되어야함)                  

 

RSYNC 서버 설정하기 : /etc/rsyncd.conf

/etc/rsyncd.conf 파일에서 RSYNC 서버 설정이 가능하다 

[서비스 명]: 클라이언트가 알 수 있는 이름으로 설정 (ex. /backup) - 클라이언트가 서버에 서비스를 요청할 때 서비스명을 알아야 함 
path: 백업 경로 - 파일이 아닌 디렉토리로 지정 한 다는 것을 주의
comment: 주석 
uid: 전송자 UID - 어떤 user id로 파일을 읽을건지 지정 (ex. root - 루트 권한으로 읽어라)
gid: 전송자 GID 
use chroot: rsync 경로를 외부에서 /로 인식  - (ex. /backup 바깥쪽에 있는 파일은 접속이 안된다) (보안상 사용)
read only: 읽기 전용으로 접근한다 (들어온 사람은 읽기 전용으로 접근할 수 있음) *최소 권한의 원칙 
hosts allow: 접속 허용할 호스트(클라이언트만 지정) - 허용하는 ip를 쭉 쓰면 됨 (cf. 192.168.10.0/24 대역에 있는 모든 컴퓨터 들어올 수 있음)
max connections: 동시 접속자 수 - 최대한 적게 지정 해야 함
timeout: 지정된 시간이 지나면 연결을 끊어버림 


192 작업 

rsync 다운로드
# dnf install -y rsync
dnf install -y rsync-daemon.noarch 
* dnf list rsync - 설치되었는지 확인하기 

디렉 토리 생성
# mkdir / backup
# cd /backup/
# echo 11 > a.txt (* 현재 디렉토리가 backup/ 이 아닌 다른 디렉토리라면 echo 11 > /backup/a.txt 로 만들어줘야 함
# echo 22 > b.txt 
*  is 로 확인 

설치 파일 작성
[backup]
path = /backup
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.10.193 *번호 주의 

* systemctl status rsyncd 로 실행중(active) 인지 확인할 것 

# systemctl start rsyncd. service => 컴퓨터 껐다 켜면 죽을지 살지 모름 그래서 아래에 프로그램 자동 실행하는 명령어를 사용할 것 
# systemctl enable rsyncd (이 명령어로 사용)

* 방화벽 해제 작업이 선행 되어야 함

rm -f /etc/issue.d/cockpit.issue 와 # rm -f /etc/motd.d/cockpit
systemctl disable --now libvirtd
rm -f /etc/libvirt/qemu/networks/default.xml
rm -f /var/lib/libvirt/network/default.xml
systemctl disable --now firewalld.service
systemctl status  firewalld.service
grubby --update-kernel ALL --args "selinux=0 quiet rhgb"
* sestatus 확인 
* systemctl status firewalld.service 확인 

193번 작업 

디렉토리 생성 
# mkdir /backup

동기화 명령어 실행 
# rsync -avuz 192.168.10.192::backup /backup 


혹시 안될 경우 # dnf list rsync 설치 되어 있는지 확인 
rsync client 명령: server의 디렉토리와 client의 디렉토리를 동기화 (동기화 명령어 실행)

# rsync -avuz source destination - source(원본)를 destination(백업하는곳) 으로 복사(=동기화) 함 
# rsync-avuz IP::[서비스명] [백업 디렉토리] - 서비스명에 해당하는 디렉토리를 (ex. /backup) 백업용 디렉토리로 복사함
ex) rsync-avuz 192.168.10.192::backup /backup

192.168.10.192 서버에 접속해서 그 서버가 backup 이라는 이름으로 공유해준 데이터를 내 컴퓨터의 /backup 폴더로 바뀐 것만 골라서 
(증분 백업) 가져와라 즉, 서버와 내 컴퓨터의 파일을 비교해서, 서로 다른 부분만 골라 업데이트(동기화) 해라 라는 뜻