2025. 3. 17. 23:35ㆍDevelopers 공간 [Shorts]/Software Basic
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew,
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter
- Module Bundler : React, Webpack, Parcel
B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS
C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight
1. What? (현상)
이번 글에서는 rsync(Remote Sync)를 활용한 예시 코드를 정리해보겠습니다.
rsync란 리눅스나 유닉스에서 활용하는 remote-update프로토콜을 활용하는 파일전송 유틸리티입니다.
많이 들 사용하시는 rcp, scp보다 데이터를 압축해서 송수신할 수 있어 빠르고, 동기화를 통해 차이가 있는 파일만 복사하므로 효율적입니다.
따라서 단일 복사에는 간단한 scp를 주로 홀용하지만, 파일을 자주 동기화하거나 큰 디렉토리를 백업하는 경우는 rsync를 활용하는 것이 더 유리합니다.
그럼 rsync의 기본 명령어를 살펴보겠습니다.
2. Why? (원인)
- X
3. How? (해결책)
먼저, 아래와 같이 rsync를 설치해줍니다.
apt-get install rsync
먼저 (내 서버 ← 상대 서버)로 rsync하는 경우를 의미합니다. 주로 사용하는 옵션들은 아래와 같습니다.
- -a, --archive : 아카이브 모드로, 심볼릭 링크 & 유저와 그룹의 권한 & timestap 등의
- -v, --verbose : verbose 모드를 의미합니다.
- -z, --compress : 압축전송 모드를 의미합니다.
- -h, --human-readable : 사람이 쉽게 이해할 수 있도록 큰 용량의 단위는 K, M, or G 등의 suffix를 활용해 표현합니다.
- -e, --rsh : 원격 Shell에서 communication하기 위해 사용하는 프로그램을을 지정해줍니다. default로 ssh가 사용되지만, pem key를 활용해 보안접속하거나 rsh등을 활용하고 싶으면 이를 활용합니다.
- --progress : 보내지는 과정에 대한 progress를 보여줍니다.
- --exclude : 동기화할 폴더더 중 제외하고 싶은 것 지정해줍니다.
rsync -avh --progress \
userA@1.2.3.4:/remote/target \
/local/
위를 보면 알 수 있다시피 1.2.3.4서버의 계정 userA에 있는 /remote/target 폴더를 /local/target로 동기화하는 코드입니다.
반대로 (내 서버 → 상대 서버)로 rsync하는 경우는 아래와 같습니다.
rsync -avh --progress \
/local/target \
userA@1.2.3.4:/remote/
(내 서버 → 상대 서버) rsync할 때, ssh를 보안을 통해 접속하는 경우는 아래와 같이 -e 옵션을 활용합니다.
sync -avh -e "ssh -i my_key.pem" --progress \
/local/target \
userA@1.2.3.4:/remote/
(내 서버 → 상대 서버) rsync할 때, ssh를 보안을 통해 접속하면서 특정 폴더들은 제외하고 싶으면 --exclude 옵션을 활용합니다.
아래는 /local/target/FOLDER_A, /local/target/FOLDER_A, /local/target/FOLDER_C를 빼고 동기화하도록 했습니다.
rsync -avh -e "ssh -i my_key.pem" --progress \
--exclude target/FOLDER_A \
--exclude target/FOLDER_B \
--exclude target/FOLDER_C \
/local/target \
userA@1.2.3.4:/remote/
'Developers 공간 [Shorts] > Software Basic' 카테고리의 다른 글
[Python] 서버 동작시 다른 파일 dynamic하게 import하기 (0) | 2025.03.17 |
---|---|
[Git] Feature 브랜치에서 master 관리자의 작업파일로 대체하기 (0) | 2025.03.17 |
[Python] 간단한 Web Crawling 하기 (0) | 2024.12.18 |
[Python] 객체 데이터 저장하고 불러오기 (0) | 2024.11.20 |
[Ubuntu] Ubuntu로 멀티부팅 만들기 (0) | 2024.11.18 |