리눅스 Rsync 명령어

Rsync (Remote Sync) 는 네트워크를 통해 파일과 디렉터리를 효율적으로 동기화하는 백업 방식입니다.

전체 데이터를 매번 복사하는 대신 변경된 부분만 증분 방식으로 전송하여 빠르고 안정적인 동기화를 지원합니다.

또한 다양한 옵션을 통해 압축, 암호화, 권한 유지, 삭제 동기화 등 세밀한 제어가 가능하며, 백업과 서버 간 데이터 전송에 널리 사용됩니다. 특히 네트워크 대역폭을 절약하고, 재 전송 부담을 줄여 대규모 데이터 이전에 적합합니다.

  • rsync(Remote Sync:원격 동기화) 특징
  • samba의 핵심 개발자인 Andrew Tridgell 이 만든 로컬과 리모트간에 데이타 동기화를 위한 유틸리티
  • rsync Protocol: TCP / UDP 878 포트 사용
  • 델타 인코딩 알고리즘(delta encoding algorithm)의 사용으로 rcp, scp보다 효율적인 데이터 동기화를 진행
  • Links, 소유자, 그룹, 퍼미션에 대한 Copy 허용
  • root 권한을 요구하지 않으며, 일반 계정에서도 사용 가능.
  • 익명 및 인증 rsync 서버 지원으로 미러링에 이상적임.

✅ 리눅스 rsync 설치 및 리모트 설정하기

1. rsync 패키지 설치 여부 확인

~]# rpm -qa | grep rsync

2. 패키지가 없을 경우 설치 진행

yum -y install rsync
dnf -y install rsync
apt-get install rsync

# 록키 리눅스 9 이상에서는 rsync-daemon 데몬 설치가 필요함. 
dnf  -y install rsync-daemon
Last metadata expiration check: 3:38:37 ago on Sat Jan 27 13:41:19 2024.
Dependencies resolved.
=========================================================================================================================================================
 Package                               Architecture                    Version                                  Repository                          Size
====================================================================================================== 
----- 생략 -----
록키리눅스 9 이상의 버전부터 xinetd 버전이 사용되지 않기 때문에 systemd 소켓 서비스를 설정해야 합니다.

~]# systemctl status rsyncd
rsyncd.service - fast remote file copy program daemon
     Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled; preset: disabled)
     Active: inactive (dead)

~]#  systemctl start rsyncd
~]# systemctl enable rsyncd
~]# systemctl status rsyncd
rsyncd.service - fast remote file copy program daemon
     Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; preset: disabled)
     Active: active (running) since Sat 20xx-01-27 17:21:09 UTC; 2s ago
   Main PID: 6883 (rsync)
      Tasks: 1 (limit: 10823)
     Memory: 688.0K
        CPU: 2ms
     CGroup: /system.slice/rsyncd.service
             └─6883 /usr/bin/rsync --daemon --no-detach

3. rynsc 설정 파일 작성

~]# vi /etc/rsyncd.conf 
## 초기 설정 화면 
# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area

## 설명 ##
log file = /var/log/rsync.log            # 로그 파일 경로
[source]                                 # 부르고 싶은 명칭
path = /var/www/omeka1/files             # 소스 디렉토리 설정
uid = root                               # rsync 사용 가능한 사용자
gid = root                               # rsync 사용 가능한 그룹
use chroot = yes                         # chroot 사용여부
host allow = x.x.x.x                     # 연결한 호스트: 해당 호스트 아이피만 접근 가능
max connection = 100                     # 최대 연결 개수
timeout 300                              # 타임아웃 시간 설정(초)

### 설정 예시 ###
[myhome]
path=/home
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 222.222.123.123
max connections = 3
timeout 30

[dbdata]
path=/var/lib/mysql/
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 222.222.123.123
max connections = 3
timeout 30
## 설정 예시 ###

✅ 록키 리눅스 포함 8이하 버전 xinetd 데몬 설치 및 구동

yum -y install xinetd
dnf -y install xinetd
apt-get install rsync

# 등록된 서비스를 확인 
systemctl list-unit-files --type=service 
  • systemctl list-unit-files –type=service 명령어는 lessvi 명령어의 옵션과 동일하게 검색 기능을 사용할 수 있음.
vi /etc/xinetd.d/rsync

service rsync
{ 
        disable = no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
        
#xinetd 데몬 재구동
service xinetd restart

✅ 방화벽 포트 규칙 추가

iptables 포트 규칙을 추가합니다.

~]# vi /etc/sysconfig/iptables 

-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 873 -j ACCEPT

servicie iptables restart

방화벽을 오픈했지만 연결이 안될 경우 SeLinux를 중지합니다.

✅ 리눅스 Rsync 명령어 옵션

기본 사용 방법은 다음과 같습니다.

rsync -옵션 [백업할원본주소:경로] [백업받을경로]
rsync -옵션 [SOURCE] [DESTINATION]
rsync -옵션 [[USER]@[HOST]:[PATH] [TARGET]
  • cp 명령과 동일하게 [백업할원본의주소:경로] [백업받을경로] 순서로 파일의 경로를 설정합니다.

✅ rsync 명령어 사용 예시: 디렉토리 복사 및 동기화

-avh 옵션 중 -a 옵션은 필수 옵션인 디렉토리 복사와 동기화를 진행할 수 있게 해 줍니다.

1. 로컬에서 로컬로 복사

rsync -avh /home/testuser /backup/home

2. 로컬에서 리모트로 복사

rsync -avh /home/testuser remote_user@remotehost:/home/
## SSH 포트 번호가 다른 경우
rsync -avh -e "ssh -p 123" /home/testuser remote_user@remotehost:/home/

3. 리모트에서 로컬로 가져오기

rsync -avh remote_user@remotehost:/home/testuser /home/testuser
리눅스(펜과 안경)

Similar Posts

  • [Shell 특수문자] 리눅스 와일드카드(메타문자)

    리눅스 와일드카드는 Shell 특수문자로 메타 문자로 불리기도 합니다. Shell 특수 기호 중 와일드카드(글로빙으로 부르기도 함)는 문자 패턴에 따라 파일명을 선택할 수 있습니다. 특수 문자에는 인용(따옴표) 기호, 리눅스 다중 명령어, 리눅스 히스토리 기호, 리눅스 디렉토리 기호, 리눅스 괄호 기호 및 입출력 리다이렉션 등 다양하게 있습니다. 목차✅ 리눅스 rsync 설치 및 리모트 설정하기1. rsync 패키지…

  • 리눅스 file 명령어

    리눅스 file 명령어는 그 파일이 어떤 파일인지 확인하는데 사용되는 명령으로 파일의 파일 타입을 확인할 때 사용합니다. 확인할 수 있는 파일은 텍스트 파일(ASCII 텍스트), 바이너리 파일, 그림 파일 및 동영상 등입니다. 단순하게 파일의 확장자만 확인하는 것이 아닌 파일의 매직파일(usr/local/magic)의 내용을 참조하여 파일 종류를 표시해 줍니다. magic 파일은 특정 파일의 형식을 식별하기 위한 정보를 담고…

  • 리눅스 명령어 13가지 카테고리 분류&시스템의 이해

    리눅스의 명령줄 인터페이스(Command Line Interface, CLI)는 컴퓨터 프로그램 및 운영체제와 상호 작용하기 위한 텍스트 기반의 사용자 인터페이스입니다. 리눅스 명령어는 유닉스 계열 운영체제어서 거의 동일하게 작동하며, 명령어를 입력해서 파일의 생성, 수정, 복사 이동 및 서버 전반에 걸친 관리를 하게 됩니다. 명령어를 카테고리로 분류하지만 틀릴 수 있는 점을 참고하여 주시기 바랍니다. 목차✅ 리눅스 rsync 설치…

  • 리눅스 head 명령어 & tail 명령어

    리눅스 head 명령어는 파일의 처음 10줄을 보여주는 명령어이며, tail 명령어는 파일의 마지막 10줄을 보여주는 명령어입니다. 옵션 없이 사용할 경우 각각의 머리와 꼬리 부분을 보여주는 것을 알 수 있습니다. head와 tail 명령어는 보통 서버의 access_log를 볼 때 주로 많이 사용됩니다. 두 명령어의 사용법과 테스트 서버에서 access_log를 각각의 명령어를 통해 확인 해 보겠습니다. 목차✅ 리눅스…

  • [Linux] ip 명령어 : 네트워크 인터페이스 및 설정 관리

    ip 명령어는 리눅스에서 네트워크를 관리할 때 사용되는 주요 도구로, 다양한 네트워크 작업을 수행할 수 있습니다. ip 명령어는 네트워크 인터페이스의 상태를 확인하거나 활성화 및 비활성화 할 수 있으며, IP 주소를 확인하거나 수동으로 추가 및 삭제하는 작업도 가능합니다. 또한 라우팅 테이블을 조회하고 경로를 추가하거나 제거하는 등의 라우팅 관리, ARP 테이블 확인 및 수정, 터널링 설정…

  • 리눅스 uptime 명령어(서버 가동 시간&1,5,15 평균 로드 확인)

    리눅스 uptime 명령어는 시스템의 평균 부하율과 서버의 가동 시간을 확인하는 명령어입니다. 서버의 부팅 시간을 알고 싶을 때, 최근 15분 동안의 평균 로드를 통해 부하율을 알고 싶을 때 사용하는 명령어임을 알 수 있습니다. 목차✅ 리눅스 rsync 설치 및 리모트 설정하기1. rsync 패키지 설치 여부 확인2. 패키지가 없을 경우 설치 진행3. rynsc 설정 파일 작성✅…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 9   +   5   =