728x90
리눅스 환경에서 rsync 명령어로 데이터 동기화하는 방법
테스트 환경
구분 | 서버 이름 | 서버 아이피 | 디렉터리(데이터) | 비고 |
source | serv-A | 1.1.1.1 | /app/file | |
target | serv-B | 2.2.2.2 | /app/file |
SSH Key 교환
- RSA 암호화 방식으로 SSH 공개키와 비공개키를 생성
root@serv-B:file$ ssh-keygen -t rsa
- SSH 공개키 복사(serv-B -> serv-A 복사)
- 공개기 복사할 때 패스워드 필요.
root@serv-B:file$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@1.1.1.1
- SSH 접속 테스트
root@serv-B:file$ ssh 'root@1.1.1.1'
데이터 동기화 스크립트 작성
- rsync 명령어를 사용하며 동기화할 수 있는 스크립트 작성
vim sync_script.sh
#!/bin/bash
log_dir="/var/log/rsync"
log_file="${log_dir}/rsync.log"
if [ ! -d "${log_dir}" ]; then
mkdir -p "${log_dir}"
fi
while true
do
echo "$(date "+%Y%m%d-%H%M%S") : Starting rsync" >> "${log_file}"
rsync -avz --delete root@1.1.1.1:/app/file/ /app/file/ >> "${log_file}" 2>&1
echo "$(date "+%Y%m%d-%H%M%S") : Rsync completed" >> "${log_file}"
echo "" >> "${log_file}"
sleep 300
done
해당 명령어는 원격 서버의 /app/file/ 디렉토리와 로컬 서버의 /app/file/ 디렉토리를 동기화하는 rsync 명령어입니다.
- -a: 아카이브 모드. 소유자 정보, 권한 정보 등을 보존하면서 동기화합니다.
- -v: 자세한 출력 모드. 동기화 과정에서 발생하는 작업을 상세히 출력합니다.
- -z: 압축 전송 모드. 데이터를 전송할 때 압축하여 전송합니다. 대용량 파일 전송 시 속도 향상 효과를 가져옵니다.
- --delete: 동기화 시 원격 서버에만 존재하는 파일이나 디렉토리를 삭제합니다. 주의해서 사용해야 합니다.
- root@1.1.1.1:/app/file/: 동기화할 원격 서버와 디렉토리 경로입니다.
- /app/file/: 동기화할 로컬 서버의 디렉토리 경로입니다.
- 스크립트 권한 설정
chmod +x sync_script.sh
- 스크립트 실행
bash sync_script.sh &
- rsync 로그 확인
tail -f /var/log/rsync/rsync.log
20230413-134757 Starting rsync
receiving incremental file list
sent 1,002 bytes received 270,299 bytes 180,867.33 bytes/sec
total size is 7,790,657,309 speedup is 28,715.92
20230413-134758 : Rsync completed
728x90
'리눅스' 카테고리의 다른 글
wait 명령어 (0) | 2023.04.15 |
---|---|
[draft] sleep 명령어 (0) | 2023.04.15 |
웹 서버에서 CORS 설정하는 방법 (0) | 2023.04.12 |
[draft] JMeter를 설치하는 방법 (0) | 2023.04.11 |
[draft] 우분투에서 needrestart를 설치하고 사용하는 방법 (0) | 2023.04.11 |