반응형
rsync를 사용하여 SSH를 통해 파일을 복사하는 방법
rsync는 파일 및 디렉토리를 빠르고 효율적으로 동기화하는 대표적인 Linux 명령어입니다.
기본적으로 SSH를 통해 안전하게 원격 서버와 데이터를 전송할 수 있으며 변경된 파일만 복사하기 때문에 백업, 배포, 서버 간 파일 이전 작업에 자주 사용됩니다.
rsync 기본 특징
SSH 기반 암호화 통신 지원
변경된 파일만 전송 (증분 복사)
파일 권한, 소유자, 시간 정보 유지 가능
대용량 데이터 동기화에 효율적
로컬 ↔ 원격 / 원격 ↔ 로컬 모두 가능
기본적인 구문
Push (로컬 → 원격 서버)
rsync [OPTION] SRC [USER@]HOST:DEST
Pull (원격 서버 → 로컬)
rsync [OPTION] [USER@]HOST:SRC DEST
자주 사용하는 옵션
- -a 아카이브 모드 (권한, 소유자, 시간 유지)
- -v 상세 출력
- -z 압축 전송
- -h 사람이 읽기 쉬운 단위 표시
- --progress 파일별 진행률 표시
- --info=progress2 전체 전송 진행률 표시
- -e "ssh" SSH 프로토콜 사용
1. 로컬 서버 → 원격 서버 디렉토리 복사
로컬 서버의 /Source 디렉토리를 원격 서버 2.2.2.2 의 /Destination/ 으로 복사합니다.
rsync -ahvz --progress -e "ssh" /Source root@2.2.2.2:/Destination/
- /Source : 로컬 서버 원본 디렉토리
- root@2.2.2.2 : 원격 서버 접속 계정 및 IP
- /Destination/ : 원격 서버 대상 경로
2. 원격 서버 → 로컬 서버 디렉토리 복사
원격 서버 2.2.2.2 의 /Source 디렉토리를 로컬 서버 /Destination/ 으로 복사합니다.
rsync -ahvz --progress -e "ssh" root@2.2.2.2:/Source /Destination/
3. 특정 파일만 복사하는 방법 ★★★★★
로컬 서버의 nginx.conf 파일을 원격 서버 동일 경로로 복사합니다.
sudo rsync -avz --info=progress2 \
--rsync-path="sudo rsync" \
/etc/nginx/nginx.conf \
ubuntu@192.168.10.222:/etc/nginx/nginx.conf
명령어 옵션
- sudo : 로컬 서버 관리자 권한 실행
- -avz : 권한 유지 + 상세 출력 + 압축
- --info=progress2 : 전체 전송률 표시
- --rsync-path="sudo rsync" : 원격 서버에서도 sudo 권한으로 저장
왜 --rsync-path="sudo rsync" 를 사용할까?
일반 사용자(ubuntu)는 /etc/nginx/ 경로에 쓰기 권한이 없습니다.
따라서 원격 서버에서 아래처럼 관리자 권한으로 rsync를 실행하도록 지정합니다.
sudo rsync
즉, 로그인은 ubuntu 계정으로 하고 실제 파일 저장은 root 권한으로 수행합니다.
728x90
복사 후 Nginx 설정 검증 및 재시작
ssh ubuntu@192.168.10.222 \
"sudo nginx -t && sudo systemctl reload nginx"
- nginx -t : 설정 파일 문법 검사
- 오류 없을 경우 reload 수행
- 서비스 중단 없이 설정 반영 가능
사용 예제
1. 서버 백업
rsync -avz /data backup@10.0.0.10:/backup/
2. 웹 소스 배포
rsync -avz ./html/ web@10.0.0.20:/var/www/html/
3. 제외 파일 지정
rsync -avz --exclude="*.log" /data/ backup@10.0.0.10:/backup/
주의사항 (중요)
슬래시(/) 차이
/Source
디렉토리 자체 복사
/Source/
디렉토리 내부 내용만 복사
rsync -av /data /backup/
→ /backup/data
rsync -av /data/ /backup/
→ /backup/ 내부에 내용만 복사
rsync는 단순 복사 명령어가 아니라 서버 운영자가 가장 많이 사용하는 동기화 도구입니다.
728x90
반응형
'리눅스' 카테고리의 다른 글
| [Apache] 아파치 액세스 로그 설정 (0) | 2020.12.15 |
|---|---|
| Apache 다운로드 대역폭 속도 제한 (1) | 2020.12.15 |
| CentOS 8에서 Fabric 라이브러리를 설치하는 방법 (0) | 2020.12.14 |
| Docker 컨테이너의 변경 내용을 이미지로 커밋, 저장, 로드, 태그 변경하는 방법 (0) | 2020.12.11 |
| Rocky Linux 9에서 Postfix 메일 서버를 설치하고 설정하는 방법 (1) | 2020.12.11 |