티스토리 뷰
리눅스간 파일, 폴더를 복사할때 scp 를 이용해 통째로 복사를 수행한적이 있다.
최초로 데이터를 복사할때는 scp 를 써도 무방하지만
기존에 데이터가 있는 상태에서 scp 를 사용하면 전체 파일을 전부 복사해서
중복된 자료는 덮어쓰기가 된다.
즉, 불필요한 전송 리소스를 사용하게 되는 것.
[Linux] scp - 리눅스간 파일/폴더 전송.
서로 다른 리눅스 서버간 파일을 통째로 옮겨야 해서 scp (secure copy) 를 써보기로 했다.(얘 없었으면 ftp로 내컴에 옮긴담에 목적지 서버에 밀어 넣는 짓을 하고 있었겠지...? ㅋ) scp 대상파
jong-bae.tistory.com
이번에는 rsync 를 사용하여 없는 파일 또는 업데이트 되어질 파일만 전송해보려고 한다.
rsync
사용법은 간단한 옵션을 부여하여 중복, 업데이트 만 체크할 수 있다.
rsync -avz /home/test/ user@127.0.0.1:/home/test2
옵션 설명:
- -a : 권한, 시간, 심볼릭 링크 등 보존 (archive 모드)
- -v : verbose (상세 출력)
- -z : 전송 시 압축
- -n : 전송은 하지 않고 실행결과만 출력 (시뮬레이션 모드)
- --ignore-existing : 대상에 이미 존재하는 파일은 덮어쓰지 않음
- --update : 수정 시간이 더 최신인 경우에만 덮어씀
데이터 전송전에 복사될 파일들을 체크하기 위해 -n 을 붙여주면 실제 전송은 수행하지 않는다.
같은 서버내에서 복사시에는 -z 압축 전송 옵션은 굳이 필요 없어보인다. (타 서버에 옮길때는 좋음)
# 새로운 파일만 추가 (기존 파일은 절대 덮어쓰지 않음)
rsync -avz --ignore-existing /home/test/ user@127.0.0.1:/home/test2
# 기존 파일보다 새로운 게 있으면 업데이트
rsync -avz --update /home/test/ user@127.0.0.1:/home/test2
# 시뮬레이션만 (어떤 파일이 이동될지 확인)
rsync -avzn --update /home/test/ user@127.0.0.1:/home/test2
rsync -avzn --ignore-existing /home/test/ user@127.0.0.1:/home/test2
-avzn 옵션으로 중복, 업데이트 시뮬레이션 해보면 어떤 파일들이 추가되고 변경되었는지 확인 할 수 있고
-n 옵션을 제거하고 수행하면 시뮬레이션 대로 파일 전송을 수행한다.
* 최상위 폴더에서 시뮬레이션 돌려보면 파일 외에도 기존에 있는 폴더들도 다 조회되는데 파일들만 따로 보고 싶다면 아래와 같이 grep 하여 파일만 따로 확인 하는게 좋겠다.
rsync -avzn --ignore-existing /home/test/ user@127.0.0.1:/home/test2 | grep -v '/$'
rsync -avzn --update /home/test/ user@127.0.0.1:/home/test2 | grep -v '/$'
'Server > Linux' 카테고리의 다른 글
| [Linux] PuTTy 테마 색상 바꾸기 (기존 세션까지 바꾸기) (0) | 2025.09.04 |
|---|---|
| [Linux] 서버시간 동기화 (feat.chronyd) (0) | 2025.06.27 |
| [Linux] 구형 linux 에 java 버전 업그레이드 (feat.CentOS) (0) | 2025.04.08 |
| [Linux] vi 에디터에서 문자열 전체 치환하기. (0) | 2024.05.16 |
| [Linux] NFS 공유 마운트(mount)하기 (0) | 2024.02.15 |