리눅스 RSYNC 특정 폴더 제외하기



서버 파일 백업시 유용한 유틸인 rsync 입니다.


특정 폴더를 제외하고 싶을때는 --exclude 옵션을 사용하면 됩니다.


rsync -av --delete --exclude 'tmp' /home /backup


/home/tmp 폴더를 제외하고 싶다면 상대경로로 'tmp' 만 적으시면 됩니다.



여러개를 제외하려면 --exclude-from '적용제외할리스트파일'


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

RSYNC SSH 포트가 22번이 아닐때



ssh 포트가 22 가 아니면 아래처럼 rsync 실행시 에러가 납니다.


# rsync -av -e ssh root@example.com:/var/www/html /var/www/html

ssh: connect to host example.com port 22: Connection refused

rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]

rsync error: unexplained error (code 255) at io.c(605) [Receiver=3.0.9]


이럴때는 ssh -p포트번호를 따옴표로 묶어주면 됩니다.


# rsync -av -e "ssh -p10022" root@example.com:/var/www/html /var/www/html

receiving incremental file list


sent 23 bytes  received 734 bytes  302.80 bytes/sec

total size is 24688  speedup is 32.61


그리고 아래 처럼 해도 됩니다.


# rsync -av --rsh="ssh -p10022" root@example.com:/var/www/html /var/www/html

receiving incremental file list


sent 23 bytes  received 734 bytes  302.80 bytes/sec

total size is 24688  speedup is 32.61


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

LSYNCD 서버 파일 동기화 시키기



웹서버의 이미지나 데이터 파일을 다른 원격지 서버에 실시간 동기화를 원할 때 lsyncd 데몬을 사용하면 간단히 파일 동기화가 가능합니다.


그리고 같은 서버내 다른 디렉토리에도 백업이 가능하고 특정 폴더나 특정 파일을 제외하는 것도 가능합니다.


lsyncd.conf 설정 옵션에 대해서 알아보겠습니다.



▶ LSYNCD 설치


# yum install lsyncd lua rsync


lsyncd 와 lua 를 설치하여야 한다.

rsync 는 기본적으로 설치가 되어있겠지만 안되어 있다면 설치를 해주면 된다.



▶ 데몬 동작 설정


# systemctl enable lsyncd

# systemctl start lsyncd


6.x 버전은

# chkconfig --level 2345 lsyncd on

# service lsyncd start

아직 설정전이라 에러가 발생할겁니다.



이제 설정파일을 설정해보겠습니다.



▶ 같은 서버에 파일 동기화 설정 ( vi /etc/lsyncd.conf )


settings {

logfile="/tmp/lsyncd.log",

statusFile="/tmp/lsyncd-status.log"

}


sync {

default.rsync,

source="/var/www/html",

target="/var/www/html_backup"

}



▶ 동작 테스트


# touch /var/www/html/test.{1..5}

# ls -l /var/www/html_backup/

-rw-r--r-- 1 root root      0 12월 23 13:51 test.1

-rw-r--r-- 1 root root      0 12월 23 13:51 test.2

-rw-r--r-- 1 root root      0 12월 23 13:51 test.3

-rw-r--r-- 1 root root      0 12월 23 13:51 test.4

-rw-r--r-- 1 root root      0 12월 23 13:51 test.5


파일이 동기화가 안되어 있다면 몇 초 후에 재확인 해보세요.

그래도 파일이 동기화가 안된다면 /var/log/message 로그 파일을 확인해 보고 에러를 잡아주면 됩니다.

/etc/lsyncd.conf 파일에 설정이 잘 못 되었을 가능성이 큽니다.



이번엔 원격지 서버에 파일을 동기화 시키는 방법에 대해서 알아보겠습니다.


먼저 ssh 암호 입력 없이 접속이 가능하도록 만들어 주어야 합니다.


▶ 암호키 생성 및 복사


# ssh-keygen

# ssh-copy-id -p포트번호 root@192.168.1.3


에러가 나면 scp ./.ssh/id_rsa.pub root@192.168.1.3:~/.ssh/authorized_keys 이렇게 복사를 하면 됩니다.


원격지에 다른서버의 key값이 있다면 덥어쓰면 안되니깐 아래의 방법을 사용하여야 합니다.


cat ./.ssh/id_rsa.pub | ssh -p포트번호 root@192.168.1.3 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"


ssh-copy-id 명령어를 사용하면 덥어쓰지 않고 추가가 됩니다.



▶ 원격지 서버에 파일 동기화 설정 ( vi /etc/lsyncd.conf )


settings {

logfile="/tmp/lsyncd.log",

statusFile="/tmp/lsyncd-status.log"

}


sync {

default.rsyncssh,

source="/var/www/html",

host="192.168.1.3",

targetdir="/var/www/html"

}



▶ 로컬 및 원격지 서버에 파일 동기화 설정 ( vi /etc/lsyncd.conf )


settings {

logfile="/tmp/lsyncd.log",

statusFile="/tmp/lsyncd-status.log"

}


sync {

default.rsync,

source="/var/www/html",

target="/var/www/html_backup"

}


sync {

default.rsyncssh,

source="/var/www/html",

host="192.168.1.3",

targetdir="/var/www/html"

}


이렇게 하면 이중으로 백업이 가능합니다.



▶ 기타 설정


settings {

logfile="/tmp/lsyncd.log",

statusFile="/tmp/lsyncd-status.log"

}


sync {

default.rsyncssh,

source="/var/www/html",

host="192.168.1.3",

targetdir="/var/www/html",

delay = 1,

delete = true,

exclude = {

'/test1' ,

'/test3' ,

'*.tmp' ,

'*.swp'

},

ssh = {

port = 10022

},

rsync = {

archive = true,

compress = false,

verbose = false

}

}


delay : 동기화 작동 시점을 초단위로 조절할 수 있습니다. 디폴트는 15초 입니다.

delete :

원본에서 파일 삭제시 타겟까지 삭제하는 옵션입니다.

false 면 삭제를 하지 않습니다.

exclude :

/var/www/html/test1 폴더를 제외하려면 위에 처럼 exclude 옵션을 사용하면 됩니다.

source 폴더가 루트로 보고 적어주면 됩니다.

파일을 제외 하려면 *.swp 처럼 적어주면 됩니다.

ssh :

ssh 포트를 설정할 수 있습니다.

rsync :

archive 소유권까지 동일하게 복사가 됩니다.

compress 압축여부을 지정할 수 있습니다.

verbose 로그를 상세하게 보여주는 옵션입니다.



▶ lsyncd.log 에러


Wed Mar 15 14:05:54 2017 Normal: --- TERM signal, fading ---

Wed Mar 15 14:05:56 2017 Error: Terminating since out of inotify watches.

Consider increasing /proc/sys/fs/inotify/max_user_watches


동기화 시키려는 파일이 많은 때는 위와 같은 에러가 발생합니다.


이럴때는 max_user_watches 수를 증가시켜 주면 됩니다.


# echo 65536 > /proc/sys/fs/inotify/max_user_watches


이제 lsyncd 를 재시작 하면 됩니다.



MySQL DB 동기화는 https://ivps.tistory.com/217 여기를 참고하세요.



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,